У меня есть две модели с однозначной ассоциацией.
class User < ActiveRecord::Base
has_one :setting
end
class Setting < ActiveRecord::Base
belongs_to :user
end
Каждая модель имеет множество полей, и пользователь довольно широко используется внешним сервером, не поддерживающим рельсы, поэтому я разделил таблицы.
Я пытаюсь использовать build_association, но все, что я получаю, это неопределенный метод `build_setting 'для nil: 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