我有两个模型,一对一关联。
class User < ActiveRecord::Base
has_one :setting
end
class Setting < ActiveRecord::Base
belongs_to :user
end
每个模型都有很多字段,用户非常广泛地使用非rails外部服务器,这就是我将表分开的原因。
我正在尝试使用build_association,但我得到的是nil的未定义方法`build_setting':NilClass。我想这样做是因为我想要一个包含两个模型中的字段的表单来设置新用户。
在我的用户控制器新方法中,我试试这个:
def new
@user = User.new
@setting = @user.setting.build_setting
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @user }
end
end
引发:
NoMethodError in UsersController#new
undefined method `build_setting' for nil:NilClass
为什么呢?根据api文档,这是实现它的方法。
这样做似乎有效,但它不是正确的方式(或者是它?):
def new
@user = User.new
@setting = Setting.new
@user.setting=@setting
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @user }
end
end
答案 0 :(得分:2)
您需要使用:
@setting = @user.build_setting
这是在编辑之后,所以如果您喜欢这个答案,请接受下面的Mahesh。
答案 1 :(得分:1)
在您的用户模型中添加
class User < ActiveRecord::Base
has_one :setting
validates_associated :setting
end
然后使用
@setting = @user.build_setting