У меня проблемы с выполнением действия обновления для одного из моих объектов данных.У меня есть:
class UserProfile < ActiveRecord::Base
belongs_to :address, :dependent => :destroy
belongs_to :post_address, :class_name => 'Address', :dependent => :destroy
accepts_nested_attributes_for :address
accepts_nested_attributes_for :post_address
# validations and stuff
end
class Address < ActiveRecord::Base
# validations and stuff
end
И проблема с формой и действием:
= form_for @up, :url => '/profile/edit', :method => :post do |f|
= f.error_messages
#...
= f.fields_for :address, @up.address do |a|
#...
= f.fields_for :post_address, @up.post_address do |a|
#...
.field.push
= f.submit 'Save', :class=>'ok'
Действие:
def edit_account
@user = current_user
if request.post?
@up = @user.user_profile.update_attributes(params[:user_profile])
if @up.save
redirect_to '/profile/data', :notice => 'Zmiana danych przebiegła pomyślnie.'
end
else
@up = @user.user_profile
end
end
Я получаю ошибку выглядитthis:
Couldn't find Address with ID=3 for UserProfile with ID=2
И это происходит в строке:
@up = @user.user_profile.update_attributes(params[:user_profile])
Я думаю, что AR пытается создать еще один Address
, когда форма отправлена, но я не уверен.
Почему я получаю эту ошибку?Что не так с моим кодом?