ActiveRecord: Do I need both belongs_to and has_one

你。 提交于 2020-01-01 08:36:31

问题


I have 2 models, namely user and userprofile. There is a one-to-one relationship between user and userprofile.

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

I'd like to know whether I need both class to set the connection or having just either belongs_to or has_one is enough? The same is true for the other methods, such as has-many.


回答1:


You define the association wherever you will need it. If at some point you need to say user.userprofile, then include has_one :userprofile in User. Likewise, if you need to say userprofile.user, then include belongs_to user in Userprofile.

In other words, associations are relative. You can specify that model A has_one :b without specifying that model B belongs_to :a. You simply define what you need. The same goes for one-to-many and many-to-many associations.

Just be sure to have migrated user_id to the "userprofiles" table.




回答2:


Having just a belongs_to relationship between userprofiles and user does default to has_one. However, it would be wise (Rails-proper) to specify the association on both models.

After all, if you wanted a has_many association (etc) you would want to specify that.

Check out http://guides.rubyonrails.org/association_basics.html for more info



来源:https://stackoverflow.com/questions/13436889/activerecord-do-i-need-both-belongs-to-and-has-one

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!