2011-12-04 32 views
1

我正在建立一个Rails 3.1应用程序,用户可以在其中将用户的“主题”更改为几个预制主题之一。我无法找出哪个ActiveRecord关联正确地模拟了用户和主题之间的关系。用户选择的“主题”ActiveRecord Association

我想写类似:

class User < ActiveRecord::Base 
    has_one :theme 

class Theme < ActiveRecord::Base 
    belongs_to_many :users 

但“belonds_to_many”是不是一个真正的协会,并HAS_ONE提出的主题表的外键。 (根据Association Basics

对于ActiveRecord“用户”有一个单一的“主题”,其中一个“主题”可以被许多“用户”使用的规范方式是什么?

回答

0

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

class User < ActiveRecord::Base 
    belongs_to :theme 
end 

class Theme < ActiveRecord::Base 
    has_many :users 
end 

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

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

+0

啊,这个“belongs_to”的英文意思听起来太奇怪了,并且不像铁轨一样是乍一看正确的关联,但我想没有其他选择。谢谢! – blendmaster