Rails新手有一个关于存储关联顺序的问题。背景是,我正在考虑建立一个超级简单的调查应用程序的学习目的。这样做的目的是进行多项调查并提出相应的问题。
模型简单明了:
class Survey
has_many :questions
end
class Question
belongs_to :survey
end我现在的问题-你会在哪里和如何存储自定义的顺序/顺序的问题在调查中?问题可以移动,添加和删除,并应保留来自调查答复的答案。
我正在考虑引入一个"rank_id“(在问题或调查模型中?),或者某种新的question_list模型(survey has_one :question_list, has_many :questions through :question_list)。但即使使用question_list模型,我也不知道如何保留订单。谷歌带领我找到了许多人:通过联系,它推荐了列表宝石,但对于这个用例来说,这似乎太多了吗?
谢谢您的建议!
发布于 2018-06-12 08:44:34
就我个人而言,我建议使用acts_as_list -它使重新排序变得轻而易举。这里似乎并不过分,而是正确的场景:)
然后,可以使用:Question向该模型添加默认顺序。这将确保您的问题是按预期顺序检索的。
gem本身实际上建议将order直接添加到关联中:
has_many :todo_items, -> { order(position: :asc) }它还默认使用一个名为position的列,而不是rank_id,尽管您可以覆盖它。在您的例子中,在Question模型中:
acts_as_list scope: :survey, column: :rank_id在Survey模型中:
has_many :questions, -> { order(rank_id: :asc) }如果你需要的话,我很乐意再谈一谈--告诉我。
https://stackoverflow.com/questions/50812777
复制相似问题