mysql - 如何处理不同的答案类型

标签 mysql ruby-on-rails ruby

我有风险模型。我想为每个 User 存储预定义的 risk

  1. 您吸烟吗?是 |否( bool 值)

  2. 多少支香烟? (整数)

  3. 您有糖尿病吗? [因为](字符串)

    ...

我应该如何实现 Risk 以使其能够处理不同类型的答案(整数、 bool 值、字符串)?表格应该如何显示?现在,我正在考虑如下风险:

Risk
  question(string)
  answer_type(integer)
  answer

我希望以后能够动态添加更多问题。

最佳答案

我的想法是:

Risk
  user_id (integer)
  question_id (integer)
  question(string)
  answer_type(integer)
  answer (string)

然后,如果您想进行一些统计,则需要根据 answer_type 解析答案。

answer_type -> 1 for text answer
answer_type -> 2 for integer answer
...

例如,如果你想计算整数答案的平均值:

risks = Risks.where(question_id: 1)
    if risk.answer_type == 2
      total += answer.to_i
    end
    average = total / User.all.count

关于mysql - 如何处理不同的答案类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20242756/

相关文章:

ruby-on-rails - Ruby on Rails View 未拉入 application.html.erb 布局

ruby-on-rails - 如何创建角色并为特定角色运行 Capistrano 任务?

ruby - 在不安装额外的 gem 的情况下进行 float 划分?

ruby - 使用 HTTP 字节范围 header 加速下载

ruby - 返回 Ruby 中字符串中所有正则表达式出现的索引

sql - 快速选择另一个表中 "1 or more"匹配行的所有行

mysql - 我只想要表格中的一行。进行 JOIN 更好还是只进行两次选择调用

mysql - 合并具有不同列的两个表mysql

mysql - 导入 csv 文件会导致外键约束

ruby-on-rails - 在 Rails 中上传文件