2012-05-25 58 views
0

我有這些模型:HAS_ONE關係不工作的新/創建

class User < ActiveRecord::Base 
    has_one :user_tms, :dependent => :destroy 
    accepts_nested_attributes_for :user_tms 
end 

class UserTms < ActiveRecord::Base 
    belongs_to :user 
end 

在UsersController我有這樣的:

def new 
    @user = User.new 
    @user.build_user_tms 
end 

而且用戶形式如下:

<%= form_for(@user) do |f| %> 
    <%= f.collection_select(:company_id, @companies, :id, :name, :include_blank => true) %> 

    <%= f.fields_for(:user_tms) do |tms_form| %> 
    <%= tms_form.collection_select(:department, @departments, :id, :description) %> 
    <% end %> 
<% end %> 

我認爲很基本​​的東西,但是當提交表單時我收到錯誤:

User tms user can't be blank 

而奇怪的是,當編輯一個現有的用戶,一切工作正常。任何想法在這裏出了什麼問題?謝謝!

+0

你可以顯示請求和SQL的日誌嗎? –

回答

0

不確定,但以「s」結尾的類是不尋常的。

什麼是表名? user_tms或user_tmses。我會在你的模型中設置複數名稱。

我可能錯過了別的東西,如果是這樣我會刪除。不過,最好爲新開發者提供更好的模型名稱。 tms對大多數人來說並不重要。

+0

我不認爲這是問題,因爲模型'user_mob'與表'user_mobs'發生同樣的問題。 – John

0

嗯,這真的很奇怪,因爲我認爲rails自動處理這個問題,但是看起來你的嵌套模型缺少對'nester'的引用。嘗試手動提供。

@user.user_tms.user = @user 

你必須在創建動作即,記錄被保存的地方。

您使用的是哪種版本的導軌?

0

我發現有什麼問題,我有一個方法導致一些錯誤的返回值,這干擾了與這兩個模型的關係的正常處理。