【问题标题】:Rails has_many without a belongs_toRails has_many 没有 belongs_to
【发布时间】:2015-06-30 22:36:58
【问题描述】:

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

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

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

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

【问题讨论】:

标签: ruby-on-rails ruby activerecord has-many


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

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

    再加上这样一个事实,如果没有重大黑客攻击,您就无法使用 Rails 关联。

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

    【讨论】:

    • 请注意,这不适用于 Mongodb 等非关系型数据库。
    猜你喜欢
    • 2011-12-20
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    相关资源
    最近更新 更多