शामिल मॉड्यूल में एक सत्यापन सेट कैसे ड्रॉप करें?

रेल प्लगइन (या मॉड्यूल शामिल) में सेट एक सत्यापन ड्रॉप करने का कोई तरीका है? मान लें कि मेरे पास मॉड्यूल के साथ कुछ मॉडल शामिल है:

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}

जो काम करेगा, मुझे लगता है, लेकिन यह कण सुंदर नहीं है।

0

2 उत्तर

0
जोड़ा

आप वर्ग में 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

हालांकि, इनमें से कोई भी समाधान बहुत अच्छा नहीं है। यह मॉड्यूल में केवल इसे कम करने के लिए आसान होगा, या बस उस मॉड्यूल में नो-ऑप को फिर से परिभाषित करना आसान होगा।

0
जोड़ा