Валидация только в определенной форме - PullRequest
5 голосов
/ 25 сентября 2011

Есть ли способ запустить проверку только в определенных формах (действие контроллера), а не глобально при каждом сохранении или обновлении? Что-то вроде User.create(:validate=>true) flag.

Ответы [ 3 ]

8 голосов
/ 25 сентября 2011

Да, вы можете предоставить условные выражения для проверок, например:

validates_presence_of :something, :if => :special?

private

def make_sepcial
  @special = true
end

def special?
  @special
end

Теперь все, что вам нужно сделать, чтобы включить эти проверки:

s = SomeModel.new
s.make_special
4 голосов
/ 25 сентября 2011

Как вы объяснили в комментариях, вы хотите пропустить проверку для новых записей.В этом случае вы можете использовать ответ thomasfedb, но не используйте переменную @special, а:

validates_presence_of :something, :if => :persisted?

Это будет подтверждено только для сохраненных User с, но не для новых Users.См. Документацию API на persisted?.

1 голос
/ 04 июня 2013

Это немного старо. Но я нашел http://apidock.com/rails/Object/with_options хорошим способом справиться с подобным поведением.

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