Является ли метод Rails update_attributes лучшим выбором для обновления модели в базе данных? - PullRequest
17 голосов
/ 08 мая 2009
def update
  @album = Album.find(params[:id])
  if @album.update_attributes(params[:album])
    redirect_to(:action=>'list')
  else
    render(:action=>'edit')
  end    
end

Учебное пособие по Rails 1.1.6, которое я рассматриваю, рекомендует использовать метод update_attributes для обновления модели, как в примере кода из моего контроллера, указанного выше. Глядя на документацию по Rails, мне интересно, почему метод update не был бы предпочтительным, тем более что он назван так логично.

Ответы [ 2 ]

25 голосов
/ 08 мая 2009

Обновление принимает объектный параметр id и набор атрибутов, которые в противном случае работают как update_attributes.

Так вот (из AWDWR 3-е издание )

Order.update(12, :name => "Barney", :email => "barney@bedrock.com")

эквивалентно

Order.find(12).update_attributes(:name => "Barney", :email => "barney@bedrock.com")

Так что, если все, что вы хотите сделать, это обновить строку известного идентификатора набором атрибутов, то я бы сказал, что нет причин не использовать update - похоже, именно поэтому они и написали это!

(Есть ли какой-нибудь способ, которым вы можете получить учебник для обновления с 1.1.6? Он довольно старый и не был особенно потрясающим выпуском, когда он был текущим. 1.2.6 был лучше - последний из 1. хз, если я правильно помню).

0 голосов
/ 20 сентября 2012

Используя метод update_attributes, предположим, что у вас уже есть объект, и вы просто передадите набор атрибутов. И работа сделана!

...