2013-12-14 3 views
0

У меня есть сценарий, в котором у меня есть модель activerecord, называемая клиентом. Эти клиенты имеют атрибут, называемый порядком. Прямо сейчас предположим, что 10 клиентов заказаны 1-10. Если я создаю нового клиента и хочу дать ему порядка 3, я должен вручную изменить всех остальных клиентов.Атрибут ActiveRecord динамически меняется?

В этом случае существует ли способ, который, если бы я создал новый клиент и назначил его с порядком 3, чтобы каждый клиент, который заказал> = 3, добавил бы его к первоначальному заказу?

От сообщества, я вижу, что ранжированный порядок - это то, что нужно изучить. Я также показываю порядок клиентов в admin (столбец activeadmin). Предположим, у нас есть эти 10 клиентов, и я решил принять номер 5 и перенести его на номер 3. Я понимаю, что ранжированный порядок изменит порядок соответственно, но изменит ли он также столбец порядка в админе, где все клиенты после нового номера будут навалиться на одно место?

ответ

0

Я бы порекомендовал взглянуть на ranked-model, так как он делает это довольно умно.

Представьте, что у вас есть три клиента. Вместо того чтобы дать ему последовательную позицию

Client#1: position 1 
Client#2: position 2 
Client#3: position 3 

оставляет огромные промежутки между ними:

Client#1: position -10000 
Client#2: position 10000 
Client#3: position 20000 

Таким образом, если изменения одна позиция, в большинстве случаев он имеет только обновить одну запись, которая изменила :

Client#3: position 5000 -> second place 

Только когда у него заканчивается пространство между двумя записями, он должен изменить несколько, чтобы сделать больше места.

+0

Я использую activeadmin и позволяю администратору вручную изменять положение клиента. Итак, если администратор входит туда и меняет клиента с порядка 5 на заказ 2, используя ранжированную модель, как это будет динамически менять всех остальных клиентов? Хотя ранжированная модель может изменить это за кулисами, обновит ли она activeadmin? – user2184718

+0

Ранжированная модель будет проверять, насколько удалены текущий клиент №1 и №2, а затем измените положение клиента № 5 между ними. – janfoeh

+0

Но в админе, где указан заказ 1,2,3,4 и т. Д., Чтобы пользователь мог видеть, будут ли эти номера также обновляться? Например, пятно, которое раньше было 4, теперь изменилось на 5? – user2184718

Смежные вопросы