我有2个模型,即用户和用户配置文件。用户和用户配置文件之间存在一对一的关系。
class Userprofile < ActiveRecord::Base
attr_accessible :fname, :lname, :iswoman, :age, :urlphoto, :user_id
belongs_to: user
end
class User < ActiveRecord::Base
attr_accessible :name, :provider, :uid
has_one: userprofile
end
我想知道我是否需要同时设置连接类,或只需要 belongs_to 或 has_one 就足够了?其他方法也是如此,例如 has-many 。
答案 0 :(得分:28)
您可以在任何需要的地方定义关联。如果您在某个时候需要说user.userprofile
,请在has_one :userprofile
中加入User
。同样,如果您需要说userprofile.user
,请在belongs_to user
中添加Userprofile
。
换句话说,协会是相对的。您可以指定模型A has_one :b
,而无需指定模型B belongs_to :a
。您只需定义所需内容即可。对于一对多和多对多关联也是如此。
请务必将user_id
迁移到“userprofiles”表。
答案 1 :(得分:1)
在userprofiles和user之间只有一个belongs_to关系,默认为has_one。但是,在两个模型上指定关联是明智的(Rails-proper)。
毕竟,如果你想要一个has_many关联(等),你需要指定它。