Использование Rails 2.3.8
Цель состоит в том, чтобы создать Blogger, одновременно обновляя вложенную модель пользователя (в случае изменения информации и т. Д.) .) ИЛИ создать нового пользователя, если он еще не существует.
Модель:
class Blogger < ActiveRecord::Base
belongs_to :user
accepts_nested_attributes_for :user
end
Контроллер Blogger:
def new
@blogger = Blogger.new
if user = self.get_user_from_session
@blogger.user = user
else
@blogger.build_user
end
# get_user_from_session returns existing user
# saved in session (if there is one)
end
def create
@blogger = Blogger.new(params[:blogger])
# ...
end
Форма:
<% form_for(@blogger) do |blogger_form| %>
<% blogger_form.fields_for :user do |user_form| %>
<%= user_form.label :first_name %>
<%= user_form.text_field :first_name %>
# ... other fields for user
<% end %>
# ... other fields for blogger
<% end %>
Работает нормально, когда я создаю a нового пользователя через вложенную модель, но не работает, если вложенный пользователь уже существует и имеет идентификатор (в этом случае я бы хотел просто обновить этого пользователя).
Ошибка:
Couldn't find User with ID=7 for Blogger with ID=
Этот вопрос SO касается аналогичного проблема, и единственный ответ предполагает, что Rails просто не будет работать таким образом. Ответ предлагает просто передать идентификатор существующего элемента, а не показывать для него форму - что отлично работает, за исключением того, что я хотел бы разрешить редактирование атрибутов User, если они есть.
Глубоко вложенные формы Rails с использованием own_to не работает?
Предложения? Это не кажется особенно необычной ситуацией, и, похоже, должно быть решение.