Я работаю с полиморфными ассоциациями и у меня возникли некоторые проблемы. Мои модели настроены так:
class User < ActiveRecord::Base
has_one :phone, :as => :callable, :dependent => :destroy
end
class Client < ActiveRecord::Base
has_one :phone, :as => :callable, :dependent => :destroy
end
class Phone < ActiveRecord::Base
belongs_to :callable, :polymorphic => true
end
В моем контроллере пользователя
def create
@user = User.new(params[:user])
if @user.save
@user.phone.create(:area_code => params[:user][:area_code], :phone => params[:user][:phone])
redirect_to @user, :notice => "Account created successfully!"
else
render 'new'
end
end
В журнале разработки я вижу, где правильно вставляются телефон и пользователь, но когда я иду к редактированию пользователя, поля для телефона в форме остаются пустыми. Вот мой метод редактирования:
def edit_employee
@user = User.find(params[:id])
@title = "Edit #{@user.name}"
end
Моя форма редактирования пользователя выглядит следующим образом.
- form_for @user do |f|
- if @user.errors.any?
.error_messages
%h2 Please correct the following errors
%ul
- for message in @user.errors.full_messages
%li= message
%p
= f.label :name, "Name"
= f.text_field :name
%p
= f.label :email, "Email Address"
= f.text_field :email
%p
= f.label :phone, "Phone"
= f.text_field :area_code, :style => "width: 50px;"
= f.text_field :phone, :style => "width: 100px;"
= f.label :ext, "Ext."
= f.text_field :extension, :style => "width: 60px;"
%p
= f.label :password, "Password"
= f.password_field :password
%p
= f.label :password_confirmation, "Confirm Password"
= f.password_field :password_confirmation
%p.button= f.submit
Я знаю, что должен добавить что-то к этому методу редактирования, возможно
@phone = @user.phone
Но это тоже не сработало. Это первый круг с полиморфными ассоциациями, поэтому любая помощь и указатели очень ценятся. Я смотрел Railscasts по этой теме, но, похоже, он не соответствовал моей основной функциональности. Еще раз, спасибо заранее за любую помощь и дайте мне знать, если требуется дополнительная информация!