【问题标题】:ActiveRecord Association for a user's chosen "theme"用户选择的“主题”的 ActiveRecord 关联
【发布时间】:2012-01-12 11:50:18
【问题描述】:

我正在设置一个 Rails 3.1 应用程序,用户可以在其中将其页面的“主题”更改为多个预制主题之一。我无法确定哪个 ActiveRecord 关联正确地模拟了用户和主题之间的关系。

我想写这样的东西:

class User < ActiveRecord::Base
  has_one :theme

class Theme < ActiveRecord::Base
  belongs_to_many :users

但“belonds_to_many”不是真正的关联,has_one 将外键放在 Theme 表中。 (根据Association Basics

ActiveRecord“用户”拥有一个“主题”的规范方法是什么,其中一个“主题”可以被多个“用户”使用?

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    在这种情况下,用户应该属于主题。

    class User < ActiveRecord::Base
      belongs_to :theme
    end
    
    class Theme < ActiveRecord::Base
      has_many :users
    end
    

    在这种情况下,用户表将有一个名为 theme_id 的字段。

    belongs_to 在这种情况下感觉很奇怪,从英语的角度考虑它,因为用户不应该真正属于一个主题。但是,一般的经验法则是包含外键的模型属于不包含外键的模型。

    【讨论】:

    • 啊,“belongs_to”的英文意思听起来太奇怪了,乍一看不像是正确的关联,但我想别无选择。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多