Rails:在单个字段中保存一系列值

时间:2013-08-12 16:05:16

标签: ruby-on-rails database

我有一个用户可以进行锻炼的表格。锻炼has_many练习具有以下参数:

  • 姓名:Bench Press
  • 设置:3
  • 重复:12
  • rest_time:60秒

我要做的是为重复和休息时间存储多个值,每个集合一个,但如果可能的话,不必使用连接表来存储数据。所以例如我想做这样的事情:

  • 姓名:Bench Press
  • 设置:3
  • 重复:12,8,6
  • rest_time:60,60,30

这可能吗?我找不到关于这个话题的任何内容 - 也许我问这个问题错了?

1 个答案:

答案 0 :(得分:1)

您应该为练习集创建单独的表,而不是尝试将序列化列表存储在单个列中。请参阅以下其他答案的推理:

创建一个单独的表只是为了保存练习集可能看起来不必要地复杂,但它是关系数据库的工作方式。通过将数据存储在单独的表中,您可以使用ActiveRecord轻松处理数据,例如计算最大重复次数或休息所花费的总时间。如果将值存储为列表,则必须编写不必要的自定义代码来执行此类操作。

链接的答案会更详细,有更多理由使用单独的表格。

以下是我认为exercise_set表的架构:

  • id(例如455,466,468) - 主键
  • workout_id(例如288,288,288) - 外键
  • set_number(例如1,2,3)
  • repetitions(例如12,8,6)
  • rest_time(例如60,60,30)