我正在设置一个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“用户”拥有单个“主题”的规范方法是什么,许多“用户”可以使用“主题”?
答案 0 :(得分:0)
在这种情况下,用户应该属于主题。
class User < ActiveRecord::Base
belongs_to :theme
end
class Theme < ActiveRecord::Base
has_many :users
end
在这种情况下,用户表将有一个名为theme_id的字段。
在这种情况下,从英语语言的角度考虑,belongs_to感觉很奇怪,因为用户不应该真正属于主题。但是,一般的经验法则是包含外键的模型属于不具有外键的模型。