【问题标题】:Rails: Models design for a questionnaire applicationRails:问卷应用的模型设计
【发布时间】:2017-03-27 07:41:30
【问题描述】:

我对 Rails 很陌生。我目前正在研究这个每隔几个月打开一次的问卷应用程序。用户给出的回答将在数据库中保存几轮调查,然后存档并删除。

管理员可以查看回复,并为下一轮调查修改现有的调查问题列表。管理员在用户表下有一个固定的用户帐户,因为我目前正在使用设计进行身份验证。

我无法理解的部分是,我如何才能在不影响过去几轮问卷调查的现有回答的情况下修改问题成为可能。我曾想过重复这些问题,但由于我对 Rails 缺乏了解,我不太确定如何实施。

这是我想出的当前模型:

class Questionnaire < ApplicationRecord
  has_many :responses
end

class Response < ApplicationRecord
  belongs_to :questionnaires
  belongs_to :users
  belongs_to :questions
end

class Question < ApplicationRecord
  has_many :responses
end

class Users < ApplicationRecord
  has_many :responses
end

【问题讨论】:

    标签: ruby-on-rails ruby activerecord model


    【解决方案1】:

    @zhenbin 我建议您使用 act_as_versioned gem 来保持版本随问题的每一个变化。因此,当新用户提供调查时,最新问题会被拉出,但当调查回复被拉出时,其相应问题就会被拉出

    【讨论】:

    • 我查看了acts_as_versioned gem,它看起来很有希望!我会试试看!谢谢:D
    【解决方案2】:

    为什么要修改问题?如果您进行下一轮调查,只需创建新的调查。

    此外,在您的模型中,您不能使用复数名称编写 belongs_to,因为您会收到错误,请参阅 http://guides.rubyonrails.org/association_basics.html#the-belongs-to-association 了解更多详细信息。

    【讨论】:

    • 这是因为同一组问题可能会用于多轮调查。
    【解决方案3】:

    我建议在每一轮调查之后导出数据库中的问题和答案,这样您就可以在以后随时修改问题,而不必担心维护旧的问题/答案关系。

    它可以(例如)导出到数据库转储文件或 CSV 文件(营销部门喜欢那些)。导出到 ruby​​ 中的文件并不是很复杂,我认为您将能够找到很多资源。例如,对于 CSV 导出,请查看 CSV class

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 1970-01-01
      • 2016-10-20
      相关资源
      最近更新 更多