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 解决方法比额外的数据库条目要昂贵得多。
我正在使用 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 解决方法比额外的数据库条目要昂贵得多。