2009-12-24 11 views
0

LabellingsEmailsLabels에 속합니다.특정 유효성 검사 오류 무시

각 라벨링은 이메일/라벨 쌍에 고유해야하므로 이메일에는 '테스트'라벨을 한 번만 지정할 수 있습니다.

나는 validates_uniqueness_of :label_id, :scope => :email_id으로이 작업을 수행하고 있습니다. 이것은 예상대로 작동합니다.

전자 메일에 레이블을 지정할 때 전자 메일이 고유 한 경우 레이블을 추가하고 전자 메일에 이미 해당 레이블이 지정되어있는 경우 아무 작업도 수행하지 않습니다.

내가 좋아하는 뭔가 내 애플 리케이션 주변의 유효성 검사 기능을 복제하고 싶지 않은 : 그것은 수동으로 확인하거나 처리 할 필요없이 각각의 라벨 고유 EMAIL_ID/label_id 쌍 확보 할 수있다

email.labels << label unless email.labels.include?(label) 

예외?

답변

1

나는 그것을 테스트하지 않은,하지만 당신은 아마 협회 프록시에 <<을 대체 할 수 있습니다, 뭔가 같은 :

class Email < ActiveRecord::Base 
    has_many :labelings 
    has_many :labels, :through => :labelings do 
    def <<(label) 
     unless proxy_owner.labels.include?(label) 
     proxy_owner.labelings << Labeling.new(:email => proxy_owner, :label => label)  
     end 
    end 
    end 

end 
+0

우수함 - 치료를 작동! 또한 ActiveRecord에 대한 몇 가지 새로운 팁을 가르쳐 줬습니다 :) – nfm