i trying link 2 tables each other
class musers < activerecord::base # email # sid (student_id:integer) # isyk: boolean belongs_to :user, :foreign_key => "smail" end class users < activerecord::base belongs_to :muser, :foreign_key => "email" end but,
@user = users.first @user.muser returns nil
by saying :foreign_key => "smail" telling rails muser column smail points user model's foreign key. not case.
assuming primary key of user models called id, should user_id field muser, , change belongs_to :user, :foreign_key => "smail" into:
belongs_to :user on user model can define reverse relation using:
has_one :muser also, follow rails model naming conventions, should rename users user , musers muser.
you should read more belongs_to , has_one.
if, on other hand, user model in fact uses email it's primary key, advise change , add auto-incrementing primary key instead. rule of thumb, primary key should chosen such never changes. if change, foreign keys pointing primary key have change well. should use non auto-incrementing primary key if have specific reason doing so.
more information on choosing primary key: how choose primary key?
Comments
Post a Comment