Что такое метод обновления для Rails Association? - PullRequest
5 голосов
/ 05 декабря 2010

Это так просто, что это смешно, я не мог найти информацию об этом нигде, включая API-документы и исходный код Rails:

У меня есть ассоциация: own_to, и я пришел к выводу, что обычные методы модели, которые вы вызываете в контроллере, когда у вас нет ассоциации, немного отличаются от тех, которые вы делаете.

Например, у меня нормально работает ассоциация для действия create controller:

@user = current_user
@building = Building.new(params[:building])

respond_to do |format|
   if @user.buildings.create(params[:building])
# et cetera

но я не могу найти документы о том, как работает обновление:

@user = current_user
@building = @user.buildings.find(params[:id])

respond_to do |format|
  if @user.buildings.update(params[:building])
# et cetera

Использование метода update приводит к ошибке «неверное количество аргументов (1 для 2)», и я не могу понять, какие аргументы предполагается отправить.

1 Ответ

10 голосов
/ 05 декабря 2010

Использование update_attributes:

@user = current_user
@building = @user.buildings.find(params[:id])

respond_to do |format|
  if @building.update_attributes(params[:building])
     #...
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...