Контроллеры лучше всего разбирают входные данные, но могу ли я обработать это в модели? - PullRequest
1 голос
/ 11 февраля 2012

В моем приложении календаря дата хранится как текстовое поле

  = text_field :task_time, :day, :value => display_date(@date), :id => "date-n"

Я прочитал эту дату в методе индекса контроллера, но затем предварительно генерирую время по умолчанию, как сегодня в модели:

private

   def generate_task_time

   self.task_time = Time.now if self.task_time.nil?

   end

Мне нужно изменить его и установить значение default_time по умолчанию на время, отображаемое в данный момент в календаре, но я получаю неопределенную локальную переменную или ошибку метода `params 'при попытке прочитать ее в модели: 1007 *

Возможно ли вообще сделать это в модели или лучше удалить generate_task_time и сделать все в контроллере?

Любое предложение по синтаксису -

DateTime.strptime("#{params[:date]}")

или

convert_to_string(params[:task_time]) unless params[:task_time].nil?

1 Ответ

2 голосов
/ 11 февраля 2012

params - это метод экземпляра на контроллере, поэтому у вас не будет доступа к нему в модели.Вы можете передать значение params[:task_time] в модель, хотя:

task.task_time = convert_to_string(params[:task_time]) if params[:task_time]

Совершенно верно установить атрибуты для модели из контроллера.Это общий шаблон Rails для обновления атрибутов модели в действии контроллера:

if model.update_attributes(params[:model])
  # do something success-y
else
  # do something fail-y
end

Но если вы начнете слишком много делать в контроллере, вы будете связаны с жизненным циклом запроса и будете испытывать трудностиВаша настоящая бизнес-логика.Это всегда о балансе!

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