gpt4 book ai didi

ruby-on-rails - 如何设计一个允许用户创建多个字段的模型?

转载 作者:行者123 更新时间:2023-12-04 05:50:46 24 4
gpt4 key购买 nike

我有一个Review模型。我的用户应该能够撰写评论。 Review#New 的 View 应该是一个带有管理员预先创建的文本字段的表单。

换句话说,我的管理员用户应该能够创建具有不同字段的 Review 模型的多个实例,甚至可能具有不同的输入类型(字符串、整数等)。这样,当普通用户登录时,他们会看到管理员用户为数据收集指定的不同表单字段。

当然,所有这些都应该存储在数据库中,以便在存储的上下文中检索(也称为特定模型)。

在 Rails 中解决这个问题的最佳方法是什么?

将其视为调查表单和调查表单生成器。

如果我可以使用 Simple-Form 来完成此操作,那就太好了,但这不是必需的。

编辑 1

以下是他们应该能够添加到评论中的字段类型的示例:

enter image description here

最佳答案

根据我的经验,数据库设计的很大一部分是通过简单地为事物找到正确的名称来帮助的。就您而言,我认为您考虑调查或测验的方向是正确的。

查看 survey gem 的想法。其中的基本模型是调查。调查有很多问题。问题有很多选项。调查也有许多尝试,这些尝试都是对调查的回答。尝试就会有很多答案。

因此,您的推论可能是评论/评估(由管理员创建),其中可能有许多标准/查询(可能是不同类型,但我们稍后会讨论)。然后,您的用户将创建属于特定审核/评估的响应/评估,并有许多答案/响应。

对于不同的问题类型(简答题、李克特量表评分、1-10、标签列表等),您可以在标准/查询上使用多态性。

希望我使用过的一些名称能够对您有所帮助。请随意使用同义词库来获取更多灵感。

编辑Re:多态性

免责声明:根据您的应用程序,多态性可能有些过大。

当然,我会扩展一些。不完全是。查看 polymorphism 上的 Rails 指南如果你还没有。我想你想要的是

class Criterion < ActiveRecord::Base
belongs_to :askable, polymorphic: true
end

然后我将为每个问题/标准类型制作一个模型。例如:

class ShortAnswer < ActiveRecord::Base
has_many :criteria, as: :askable
end
class Likert < ActiveRecord::Base
has_many :criteria, as: :askable
end

旁注:如果 Rails 没有正确地将条件复数化为条件,您可能需要将以下内容添加到您的 config/initializers/inflections.rb 文件

ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'criterion', 'criteria'
end

关于ruby-on-rails - 如何设计一个允许用户创建多个字段的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34969873/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com