2010-12-23 108 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