【发布时间】:2012-11-15 04:21:07
【问题描述】:
我是 Ruby on Rails 的新手(可能很快就会很明显),我正在尝试为以下数据场景找出一个模型。我已经阅读了几篇文章并详细搜索了谷歌,但我仍然感到困惑。
我有 5 个具有相同列的不同表,但 value 列具有不同的数据类型。出于各种充分的原因,他们的数据位于 5 个单独的表中,但可以将其视为跨多个表分片的数据。
logbook_strings (user_id, entry_id, field_id, value)
logbook_booleans (user_id, entry_id, field_id, value)
logbook_integers (user_id, entry_id, field_id, value)
logbook_decimals (user_id, entry_id, field_id, value)
logbook_datetimes (user_id, entry_id, field_id, value)
下面是数据的样子:
------------------------------------------------
| user_id | entry_id | field_id | value |
------------------------------------------------
| 1 | alpha1 | date | 2012-11-14 |
| 1 | alpha1 | duration | 1.2 |
| 1 | alpha1 | remarks | Nice job. |
------------------------------------------------
| 1 | alpha2 | date | 2012-11-13 |
| 1 | alpha2 | duration | 2.7 |
| 1 | alpha2 | remarks | Bad job. |
------------------------------------------------
输入 alpha1:
2012-11-14,1.2,干得好。
输入 alpha2:
2012-11-13, 2.7, 糟糕的工作。
等等
我这样做的原因是我可以拥有一个无限灵活的数据库。我可以随时添加新的field_id 来向我的应用程序添加新的字段/功能,而不是进行架构更新以向宽日志表添加另一列。
所以我想知道的是,有没有一种方法可以让我拥有一个可以引用所有 5 个表的 ActiveRecord 模型?
【问题讨论】:
-
澄清一下,如果存在这样的模型,您希望调用哪些方法?像这样的东西:lb = Logbook.new; lb.int_value = 10; lb.string_value = "foo"?
-
好问题。在我的应用程序中,我有日志条目,每个条目中有大约 25-30 个值。我没有使用包含大量列的“日志条目”表(以及要管理的粗糙架构),而是使用上述
entry_id和field_id,如下所示: -
不幸的是,它切断了代码。也许把它放在 pastebin 或 github gist 中并包含它的链接?或者用它更新您的问题也可以。
-
查看此链接(比摆弄 SO 的评论框更容易):d.pr/n/Mxc8
-
所以要回答你的问题,是的,我会像你推荐的那样查询数据库并将数据插入其中。
标签: ruby-on-rails activerecord