Функция обратного вызова не работает в rails before_save - PullRequest
1 голос
/ 16 ноября 2011

У меня в модели следующее:

before_save :set_defaults

def set_defaults
  self.num_results ||= 5
end

И я создаю объект в моем контроллере так:

Search.create!(  :keyword        => params[:keyword],
                 :ip_address     => request.remote_ip,
                 :referring_page => request.referer )

Несмотря на то, что я не установил значение для num_results, оно все равно сохраняется как 0 (что является значением по умолчанию в схеме БД). Функция обратного вызова не вызывается вообще. Любые подсказки?

Обновление:

Оказывается, что обратный вызов действительно вызывается, проблема в:

self.num_results ||= 5

Как бы я установить значение по умолчанию в ruby? Поскольку это, похоже, не работает.

1 Ответ

1 голос
/ 16 ноября 2011

num_results устанавливается только на 5, если num_result равен nil. В вашем случае по умолчанию он равен 0, поэтому assignemt ничего не делает. Попробуйте изменить свое назначение на:

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