Почему update_attribute запускает проверку? - PullRequest
0 голосов
/ 17 марта 2011

У меня два отключенных текстовых поля. И это значение равно нулю.

Тем не менее update_attribute запускает проверку для этих текстовых полей.

Насколько мне известно, update_attribute не должен обновлять столбец spefic, которому передано значение nil.

validates_inclusion_of :text_response_time, :in => 0..60, :message => " should be between 0 to 60 minutes."

(rdb:589) params[:test][:text_response_time]
nil
(rdb:589) @test.update_attributes!(params[:test])
ActiveRecord::RecordInvalid Exception: Validation failed: Text response time  should be between 0 to 60 minutes.

Любая идея!

Ответы [ 2 ]

1 голос
/ 17 марта 2011

атрибуты обновления всегда проверяют весь объект, поэтому вы продолжаете получать неудачную проверку. Тогда вы можете либо просто использовать update_attribute (который игнорирует проверку), либо использовать условную проверку, как описано в этом railscast

0 голосов
/ 17 марта 2011

Для дальнейшей иллюстрации:

@test.update_attribute(:test, params[:test][:text_response_time])

сохранит без проверки.

Другая стратегия, которая может работать в вашей ситуации, - проверять только при создании (а не при обновлении):

validates_inclusion_of :text_response_time, :in => 0..60,
  :message => "should be between 0 to 60 minutes.", :on => :create
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...