首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails:如何存储自定义顺序/关联级别(postgres)

Rails:如何存储自定义顺序/关联级别(postgres)
EN

Stack Overflow用户
提问于 2018-06-12 08:39:07
回答 1查看 567关注 0票数 0

Rails新手有一个关于存储关联顺序的问题。背景是,我正在考虑建立一个超级简单的调查应用程序的学习目的。这样做的目的是进行多项调查并提出相应的问题。

模型简单明了:

代码语言:javascript
复制
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模型,我也不知道如何保留订单。谷歌带领我找到了许多人:通过联系,它推荐了列表宝石,但对于这个用例来说,这似乎太多了吗?

谢谢您的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-12 08:44:34

就我个人而言,我建议使用acts_as_list -它使重新排序变得轻而易举。这里似乎并不过分,而是正确的场景:)

然后,可以使用:Question向该模型添加默认顺序。这将确保您的问题是按预期顺序检索的。

gem本身实际上建议将order直接添加到关联中:

代码语言:javascript
复制
has_many :todo_items, -> { order(position: :asc) }

它还默认使用一个名为position的列,而不是rank_id,尽管您可以覆盖它。在您的例子中,在Question模型中:

代码语言:javascript
复制
acts_as_list scope: :survey, column: :rank_id

Survey模型中:

代码语言:javascript
复制
 has_many :questions, -> { order(rank_id: :asc) }

如果你需要的话,我很乐意再谈一谈--告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50812777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档