Создание упорядоченного списка с помощью has_many: through - PullRequest
0 голосов
/ 22 апреля 2011

Я настроил has_many: через ассоциацию со столбцом позиции в модели соединения, чтобы я мог сохранить список упражнений.Но сейчас я ищу лучший способ взаимодействия с этими объектами в контроллере.

Должен ли я звонить Activity.drills или Activity.drill_list, чтобы получить заказанный список?

Каков наилучший способ поддержания позиции?Нужно ли вручную обновлять все позиции в DrillList?

class Drill < ActiveRecord::Base
  has_many :drill_list, :order => "position"
  has_many :activities, :through => :drill_list, :order => "position"
end

class DrillList < ActiveRecord::Base
  belongs_to :activity
  belongs_to :drill
end

class Activity < ActiveRecord::Base
  has_many :drill_list, :order => "position", :dependent => :destroy
  has_many :drills, :through => :drill_list, :order => "position"  
end

Ответы [ 2 ]

0 голосов
/ 03 января 2013

Я понимаю, что это довольно старый пост, но другое решение, которое хорошо работало для меня в прошлом: acts_as_list - https://github.com/swanandp/acts_as_list. Это старый гем, но он работает просто отлично и имеет несколько вспомогательных методовдля переупорядочения элементов.

Действует как список, что также должно помочь сохранить позицию без особых усилий с вашей стороны.

0 голосов
/ 23 апреля 2011

Вы должны в основном использовать сверла, список упражнений dr_list - это просто промежуточная модель, которую следует использовать, только если она содержит некоторые дополнительные данные.

Чтобы сохранить позицию, вы можете иметь значение индекса, но это не так.это эффективно.Вместо этого, если позиция основана на времени, вы можете просто заказать по времени и получить более новые или более старые упражнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...