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 .
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.
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.