Как удалить проверочный набор во включенном модуле? - PullRequest
2 голосов
/ 04 ноября 2008

Есть ли способ отбросить проверку, которая была установлена ​​в плагине Rails (или включенном модуле)? Допустим, у меня есть какая-то модель с включенным модулем:

class User < ActiveRecord::Base
  include SomeModuleWithValidations
  # How to cancel validates_presence_of :something here?
end

module SomeModuleWithValidations
  def self.included(base)
    base.class_eval do
      validates_presence_of :something
    end
  end  
end

До сих пор моей единственной идеей было сделать что-то вроде:

validates_presence_of :something, :if => Proc.new{1==2}

что бы сработало, я думаю, но это не совсем красиво.

Ответы [ 2 ]

1 голос
/ 04 ноября 2008

Вы можете перегрузить validates_precense_of в классе. Что-то вроде:

def self.validates_presence_of(*args)
  return if args.first == :foo
 super
end

Или, если у вас есть validates_presence_of: foo, вы можете сделать:

def foo
  self[:foo] || ""
end

Однако ни одно из этих решений не очень хорошее. Скорее всего, было бы проще просто раскомментировать его в модуле или переопределить его как no-op только в этом модуле.

0 голосов
/ 08 октября 2009
...