2012-05-25 61 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

我发现有什么问题,我有一个方法导致一些错误的返回值,这干扰了与这两个模型的关系的正常处理。