Rails has_many 没有 belongs_to

Rails has_many without a belongs_to

我正在使用 Rails 4 并正在尝试实施一个 Notif 模型,该模型应该有一组已经看过它的用户。

我的想法是使用 has_many 关系 (notif has_many :users),我将看到通知的用户添加到 users。我遇到的当前问题是我无法调用 @notif.users,因为它显示 column users.notif_id does not exist,因为我没有使用 belongs_to

一种解决方案是使用多对多关系;但是,我想避免为每个查看通知的用户创建单独的关联(尝试保存数据库 space)。

有没有一种方法可以在没有 has_many 关系的情况下有效地拥有 users 字段?我想我只是想在我的 notif 模型中存储一组用户 ID。

这在技术上是可行的 - 但它不是 ActiveRecord 的工作方式,它不会为您省钱。

并非所有数据库实际上都支持数组类型。如果没有数组类型,您将不得不将 ID 存储在字符串中,这几乎消除了任何有效形式的查询和连接。

即使是支持数组的数据库也不真正支持在数组中存储外键。这意味着您可以告别参照完整性。索引数组也可能不起作用。

除此之外,如果没有重大黑客攻击,您将无法使用 Rails 关联。

我希望你现在意识到这是一个非常愚蠢的省钱计划。特别是因为与开发人员时间相比,数据库 space 便宜。

如果您使用的是关系数据库,虽然这是一个正确的全向关系,但 ActiveRecord 不会很好地与您一起玩(如果有的话)。

此外,重要的是要注意,在 2015 年,试图找到一个全方位的 ActiveRecord 解决方法比额外的数据库条目要昂贵得多。