订购has_many:直到更新时

时间:2012-03-02 11:50:35

标签: ruby-on-rails ruby has-many-through

编辑:改进后的问题

好的,我有一个基本的rails has_many:通过关联:

class SuiteEntry < ActiveRecord::Base
  belongs_to :suite
  belongs_to :case
end

class Suite < ActiveRecord::Base
  has_many :suite_entries
  has_many :cases, :through => :suite_entries
end

class Case < ActiveRecord::Base
  has_many :suite_entries
  has_many :suites, :through => :suite_entries
end

用户现在通过表单提供某些情况作为给定套件的商店。我现在的问题是:保留案例顺序的最佳方法是什么,因为用户按特定顺序排列(例如case1,case3,case2 - 这应该按照这个顺序存储和检索)。检索数据时,应恢复用户提供的顺序。

我现在想知道存储这个订购数据的最佳做法:

  • 依赖于默认情况下发生的排序(例如,通过数据库)
  • 在联接表中引入一个字段(例如“订购”)
  • 使用一些我不知道的现有插件

注意:我正在使用最新的rails 2.3

提前致谢

2 个答案:

答案 0 :(得分:0)

如果您在数据库查询后引用订单,则可以使用参数将订单传递给查询,或者您可以在客户端代码(Javascript)中对订单进行排序。

答案 1 :(得分:0)

存储订购是什么意思?您只需向has_many方法添加一个order选项,指定应该用于排序的字段,例如

has_many :suite_entries, :order => "size ASC"

另见: http://api.rubyonrails.org/v2.3.8/classes/ActiveRecord/Associations/ClassMethods.html#M001316