Ruby 创建具有多个的有序列表:到

Ruby 创建具有多个的有序列表:到,ruby,ruby-on-rails-3,activerecord,Ruby,Ruby On Rails 3,Activerecord,我设置了一个has_many:通过与联接模型上的position列关联,这样我就可以保存训练列表。但现在我正在寻找与控制器中的这些对象交互的最佳方式 我应该调用Activity.drills还是Activity.drill\u list来获取有序列表 保持职位的最佳方式是什么?我是否必须手动更新DrillList中的所有位置 class Drill < ActiveRecord::Base has_many :drill_list, :order => "position"

我设置了一个has_many:通过与联接模型上的position列关联,这样我就可以保存训练列表。但现在我正在寻找与控制器中的这些对象交互的最佳方式

我应该调用
Activity.drills
还是
Activity.drill\u 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
class-Drill“位置”
有很多:活动,:通过=>:钻取列表,:顺序=>“位置”
结束
类DrillList“位置”,:依赖=>:销毁
有多个:钻取,:至=>:钻取列表,:顺序=>“位置”
结束

您应该主要使用钻取,钻取列表只是一个中间模型,仅当它包含一些额外数据时才应使用


为了保持这个位置,你可以有一个索引值,但它可能没有那么有效。相反,如果职位是基于时间的,你可以按时间排序,然后得到更新或更旧的练习。

我意识到这是一篇相当老的帖子,但另一个在过去对我很有效的解决方案是
按列表行事。这是一个古老的gem,但它工作得很好,并且有一些辅助方法来重新排列元素


代理列表也应该有助于在不做太多工作的情况下保持职位。

有人能解释一下这里发生了什么吗?谢谢。因此,我认为我确实需要位置col,因为我希望能够对列表进行重新排序。我只想对drills数组重新排序,让模型负责更新位置。我希望有一个rails默认值来处理这个问题,但我想我会尝试在before过滤器中处理它。是的,我认为使用position属性将是更好的主意。