Предложите текущую дату в Rails - PullRequest
1 голос
/ 12 августа 2010

Я хочу предложить текущую дату пользователю, когда создается новая запись, и я хочу разрешить ему редактировать предлагаемую дату. Например, я пишу систему отслеживания ошибок, и у меня есть поле date_of_detection. В 99% случаев хорошо, если это текущая дата, но ради 1% пользователю следует разрешить редактировать ее и устанавливать любую более раннюю дату.

Меня интересует любой взлом, но в конце я хотел бы найти хороший способ сделать это.

Ответы [ 3 ]

2 голосов
/ 12 августа 2010

В дополнение к ответу Слободана , если вы в конечном итоге делаете это во многих местах и ​​просто хотите сделать это в одном месте, вы можете сделать это следующим образом:

class Bug < ActiveRecord::Base
  def initialize
    attributes = {:date_of_detection => Date.today}
    super attributes
  end
end

>> Bug.new.date_of_detection
=> Thu, 12 Aug 2010
2 голосов
/ 12 августа 2010

Хотя решение Swanands, вероятно, будет работать с переопределением инициализации для объектов activerecord, это не рекомендуется и может вызвать некоторые трудные для поиска ошибки.

Обратный вызов after_initialize существует только для этой цели.

class Bug < ActiveRecord::Base

  def after_initialize
    self.date_of_detection = Date.today if self.date_of_detection.nil?
  end
end
1 голос
/ 12 августа 2010

Когда вы создаете новую ошибку в контроллере, просто установите значение date_of_detection.Что-то вроде:

@bug = Bug.new(:date_of_detection => Date.today)

# or something like this

@bug = Bug.new
@bug.date_of_detection = Date.today
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...