协会在Rails的
问题描述:
我是新来的Rails .. 我有命名的用户(ID,姓名) 一个表,并具有所谓 user_details(ID,USER_ID,ADDITIONAL_INFO)用户的额外信息的另一个表,其中ADDITIONAL_INFO是一个散列。协会在Rails的
在用户模型I添加了一行
has_one :user_details
而在User_Detail模型i。在用户控制器添加了一行
belongs_to :user
serialize :additional_details, Hash
现在我具有动作
# set_user_empid to set the hash value empid in the additional_info column for the current_user
def set_user_empid
@user1 = current_user
@[email protected]_details
@user_detail1.additional_details[:empid] = params[:value]
@user_detail1.save
render :text => CGI::escapeHTML(@user_detail1.additional_details[:empid].to_s)
end
上面的那个@user1.user_details
显示我的错误为
NameError(未初始化的常数用户::的UserDetails):
但同样的事情,如果我改变HAS_ONE到HAS_MANY我得到的实际结果......
请给点建议..
答
这里的快速修复方法就是改变has_one :user_details
到has_one :user_detail
,但真的是你想要的东西就是要完全摆脱UserDetail模型,只是移动的列到User
模式,所以用户表有这些列:id
,name
,additional_info
然后将呼叫移动到serialize
到User
模型。没有真正的理由为元数据创建单独的表。
答
我相信,由于您使用的是user_details,具有复数形式,因此无法将其提取出来。你可以尝试使用HAS_ONE:user_detail
我只是将has_one:user_details改为has_one:user_detail,并在用户控制器中使用,就像current_user.user_detail和它工作。 – useranon 2010-12-23 10:15:00