2008-11-04 4 views
2

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} 

,하지만 그것을하지 않습니다 particulary 꽤.

답변

1

클래스의 validates_precense_of를 오버로드 할 수 있습니다. 당신이 validates_presence_of 경우

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

또는 :처럼 뭔가 foo는 당신은 할 수 :

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

그러나, 그 해결책으로는 아주 좋은 없습니다. 모듈에서 주석 처리를 제거하거나 해당 모듈에서 아무 작업도하지 않도록 다시 정의하는 것이 더 쉽습니다.

관련 문제