Rails belongs_to returns nil class -


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