Сохраняя простую запись в блоге, методы создания и обновления должны быть одинаковыми? - PullRequest
0 голосов
/ 17 декабря 2010

Чтобы избежать дублирования логики, должны ли действия создания и обновления быть одинаковыми?

Какие-нибудь хорошие примеры этого?

Ответы [ 2 ]

1 голос
/ 17 декабря 2010

Метод create отвечает за создание этого простого сообщения в блоге, а метод update отвечает за его обновление.

def create
  @blog = Blog.new(params[:blog])
  if @blog.save
    flash[:notice] = "Saved!"
    redirect_to @blog
  end
end

def update
  @blog = Blog.find(params[:id])
  if @blog.update_attributes(params[:blog])
    flash[:notice] = "Saved!"
    redirect_to @blog
  end
end

Не так много вы можете извлечь из этого, кроме того, что делатькогда сохранение завершается успешно / не удается.

0 голосов
/ 17 декабря 2010

Хотя create и update похожи, я не думаю, что стоит делать их буквально одинаковыми.Обычно вам нужны разные флэш-сообщения для каждого.Кроме того, если проверка не удалась, на create обычно лучше всего визуализировать ваше действие new, тогда как на неудачном update вы, скорее всего, захотите выполнить действие edit.Этих небольших различий обычно достаточно, чтобы было проще и удобнее читать отдельные методы создания и новые методы.

Лично у меня было бы предложение else для каждого из create и update.Они выглядят так:

#create
else
  render :action => "new"
end

#update
else
  render :action => "edit"
end

Пользователь по-прежнему может видеть ошибку и исправлять ее, но в этом случае мне вообще не нужны create и update представления.

Если бы вы использовали save! или update_attributes!, любая ошибка проверки вызвала бы исключение, которое вам нужно было бы где-то спасти.Если вы не спасете его, ваши пользователи будут получать страницу с ошибкой 500 каждый раз, когда модель не удается проверить.Вот почему более привычно использовать не!save и update_attributes методы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...