проблема обновления has_one - PullRequest
4 голосов
/ 10 мая 2010

У меня есть две модели: пользователь и учетная запись. Каждый пользователь может иметь одну учетную запись.

Создание учетной записи для пользователя работает нормально. Моя проблема в том, что когда я пытаюсь обновить учетную запись, предыдущая учетная запись user_id обнуляется и создается новая строка учетной записи с user_id. Я не хочу, чтобы это произошло. Я хочу обновить существующую строку с изменениями в учетной записи. Как мне это сделать?

Спасибо.

Ответы [ 2 ]

3 голосов
/ 10 мая 2010

С этим кодом

@account = @user.account.build(params[:account])
if @account.save 
   #... 
else 
   #...
end 

вы строите новый account. Вам нужно обновить

if @account.update_attributes(params[:account])
   #...
else
   #...
end
1 голос
/ 10 мая 2010

Так как вы не предоставили никакого кода, давайте скажем, что именно так вы создаете пользователя

user = User.create(:name => "bob")

Затем вы можете связать пользователя с учетной записью, указав user_id

account = Account.create(:user_id =>user.id, :status => "not activated")

Теперь допустим, что мы хотим изменить статус аккаунта. Мы можем вызвать обновленный метод в rails http://api.rubyonrails.org/classes/ActiveRecord/Base.html#M002270 следующим образом:

Account.update( account.id, :status => "activated")

Я могу быть более полезным с дополнительной информацией.

...