2010-12-23 109 views
0

我是新来的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我得到的实际结果......

请给点建议..

回答

1

这里的快速修复方法就是改变has_one :user_detailshas_one :user_detail,但真的是你想要的东西就是要完全摆脱UserDetail模型,只是移动的列到User模式,所以用户表有这些列:id,name,additional_info然后将呼叫移动到serializeUser模型。没有真正的理由为元数据创建单独的表。

+0

我只是将has_one:user_details改为has_one:user_detail,并在用户控制器中使用,就像current_user.user_detail和它工作。 – useranon 2010-12-23 10:15:00

1

我相信,由于您使用的是user_details,具有复数形式,因此无法将其提取出来。你可以尝试使用HAS_ONE:user_detail