我正在使用Rails 4并尝试实现一个Notif
模型,该模型应该有一组已经看过它的用户。
我的想法是使用has_many关系(notif has_many :users
),我在其中添加已经看到users
通知的用户。我遇到的当前问题是我无法致电@notif.users
,因为它指出column users.notif_id does not exist
,因为我没有使用belongs_to
。
一种解决方案是使用多对多关系;但是,我希望避免为每个查看通知的用户创建单独的关联(尝试保存数据库空间)。
有没有办法有效地拥有users
字段而没有has_many
关系?我想我只是想在我的notif模型中存储一组用户ID。
答案 0 :(得分:1)
如果你正在使用关系数据库,虽然这是一个正确的全向关系,但ActiveRecord不会很好地与你玩(如果有的话)。
此外,值得注意的是,在2015年,尝试查找全方位的ActiveRecord解决方法远比额外的数据库条目昂贵。
答案 1 :(得分:0)
技术上可行 - 但不是ActiveRecord的工作方式,也不会为您省钱。
并非所有数据库都支持数组类型。如果没有数组类型,则必须将id存储在字符串中,这几乎消除了任何有效的查询和连接形式。
即使是支持数组的数据库也不支持在数组中存储外键。这意味着你可以亲吻参照完整性再见。索引数组也可能不起作用。
除此之外,您无法在没有重大攻击的情况下使用Rails关联。
我希望你现在意识到省钱是一个非常愚蠢的计划。特别是因为与开发人员时间相比,数据库空间便宜。