Задача обновления has_one
-
25-09-2019 - |
Вопрос
У меня есть две модели, пользователь и аккаунт. У каждого пользователя может быть одна учетная запись.
Создание учетной записи пользователя работает нормально. Моя проблема заключается в том, что, когда я пытаюсь обновить учетную запись, предыдущие учетные записи user_id nullified и новая строка учетной записи создается с помощью user_id. Я не хочу этого происходит. Я хочу обновить существующую строку с изменениями в учетной записи. Как мне это сделать?
Спасибо.
Решение
С помощью этого кода
@account = @user.account.build(params[:account])
if @account.save
#...
else
#...
end
Вы строите новое account
. Отказ Что вам нужно, это обновить
if @account.update_attributes(params[:account])
#...
else
#...
end
Другие советы
Поскольку вы не предоставили ни одного кода, давайте скажем, это то, как вы создаете пользователь
user = User.create(:name => "bob")
Тогда вы можете связать пользователь с учетной записью, указав 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")
Я могу быть более полезным с большей информацией.