Я не могу связать внешний ключ перед сохранением данных (поле 'user_id' для сетевой модели пусто при сохранении в базе данных).Я новичок в RoR, поэтому, пожалуйста, извините, если мой код небрежный: -)
Модели:
class Network < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_one :network, :foreign_key => "user_id",
:dependent => :destroy
Контроллер:
class UsersController < ApplicationController
def new
@user = User.new
@network = @user.build_network
@title = "Sign Up"
end
def create
@user = User.new(params[:user])
if (@user.save)
@network = Network.new(params[:network])
if (@network.save)
sign_in @user
flash[:success] = "Welcome!"
redirect_to @user
else
@title = "Sign up"
render 'new'
end
else
@title = "Sign up"
render 'new'
end
end
Я могу получить весь пользовательский ввод из представления без проблем (используя form_for и fields_for).Должен ли я явно определять связь has_one в дополнение к использованию @ user.build_network?
В соответствии с предложением использовать accepts_nested_attributes_for
, я очистил свой контроллер до
def new
@user = User.new
@user.build_network
@title = "Sign Up"
end
def create
@user = User.new(params[:user])
if (@user.save)
sign_in @user
flash[:success] = "Welcome!"
redirect_to @user
else
@title = "Sign up"
render 'new'
end
end
обновлена ассоциация в пользовательской модели:
has_one :network, :class_name => 'Network',
:foreign_key => "user_id",
:dependent => :destroy
accepts_nested_attributes_for :network,
:reject_if => :all_blank,
:allow_destroy => true
Однако все атрибуты network_attributes остаются пустыми, когда я отправляю форму.Я следовал инструкциям в предоставленных ссылках, а также http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes (и многим другим)
Я не думаю, что это проблема с представлением / формой, так как я могу получить доступ катрибуты, использующие Network.new(params[:network]
Есть мысли / предложения?