我有一个Quiz
,其中有很多Question
s。我希望能够在测验中更改这些问题的顺序。但我不想使用诸如 之类的宝石acts_as_list
,因为那样我就必须将位置列存储在Question
类中。在我看来,它不属于那里;只有Quiz
应该知道其问题的顺序。所以,我想在 中有一questions_order
列Quiz
,其中包含该信息。
因为我需要在另一个地方使用这种模式,所以我想将该功能提取到一个扩展中。因此,该扩展名看起来像这样:
class Quiz < ActiveRecord::Base
has_many :questions, dependent: :destroy
orders :questions
end
这将扩展为这样的:
class Quiz < ActiveRecord::Base
has_many :questions, dependent: :destroy,
after_add: :add_question_order,
after_remove: :remove_question_order do
def ordered
# query for ordering questions
end
end
end
但是,这意味着该orders
方法需要扩展已经定义的has_many :questions
关联。有可能这样做吗?