Rails: установить поле даты при изменении атрибута? - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть приложение с категориями «Активный», «Лист ожидания» и «Прекращено». Они отображаются в виде поля выбора.

Когда пользователь выбирает «Завершено», я хочу поместить текущую дату в атрибут datetime (в той же модели).

Какой лучший способ сделать это? Я попробовал это, но это не сработало, и я не уверен, что это подходящее место для этого:

[в контроллере]

def update
  @household = Household.find(params[:id])
  if @household.status.eql? 'Terminated'
      @household.terminated = Date.yesterday()
  end
  if @household.update_attributes(params[:household])
    ....
  end
end

1 Ответ

3 голосов
/ 08 апреля 2011

Используйте обратный вызов after_update в вашей модели:

class Household
...
after_update :update_terminated_date

def update_terminated_date
    return unless status == 'Terminated'
    self.terminated = Date.today() # maybe better Time.now?
    self.save!
end

РЕДАКТИРОВАТЬ: Может быть, лучшая идея состоит в том, чтобы просто избавиться от столбца состояния и установить прекращение на дату, когда оно действительно завершено, и на ноль, когда это не так?

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