14

我有 2 个模型,即useruserprofile。用户和用户配置文件之间存在一对一的关系

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_tohas_one就足够了?其他方法也是如此,例如has-many

4

2 回答 2

34

您可以在任何需要的地方定义关联。如果在某些时候你需要说user.userprofile,那么包括has_one :userprofileUser. 同样,如果您需要说userprofile.user,则包含belongs_to userUserprofile.

换句话说,关联是相对的。您可以指定模型 Ahas_one :b而不指定模型 B belongs_to :a。您只需定义您需要什么。一对多和多对多关联也是如此。

只需确保已迁移user_id到“userprofiles”表。

于 2012-11-18T02:30:40.620 回答
1

在 userprofiles 和 user 之间只有一个 belongs_to 关系默认为 has_one。但是,在两个模型上指定关联是明智的(Rails-proper)。

毕竟,如果你想要一个 has_many 关联(等),你会想要指定它。

查看http://guides.rubyonrails.org/association_basics.html了解更多信息

于 2012-11-18T02:30:04.960 回答