2012-02-29 2 views
1

맞춤 DataMapper 설정자에서 설정 값이 유효한지 확인하고 싶습니다.하나의 DataMapper 속성의 유효성을 검사 할 수 있습니까?

class ToastMitten 
    include DataMapper::Resource 

    property :id, Serial 
    property :wearer, Enum['Chuck Norris', 'Jon Skeet'] 
    property :first_worn_at, DateTime 

    def wearer=(name) 
    super 
    if wearer.valid? # How can I do this? 
     first_worn_at = Time.now 
    end 
    end 

end 

t = ToastMitten.new 
t.wearer = 'Nathan Long' # invalid value; do NOT set first_worn_at 
t.wearer = 'Jon Skeet' # valid value; set first_worn_at 

내가 개체 자체에 valid?를 호출하고 모든 오류를 보지 않고 하나의 속성이 같은의 유효성을 확인하실 수 있습니다 : 예를 들어

? 내가 같이 하나의 속성의 유효성을 검사하는 방법을 찾을 수 있지만

: 나는 자신이 알아 내려고 노력하고있어

답변

2

, 여기에 내가 지금까지 찾은 최고의 솔루션입니다 :

t.wearer.valid? 

난 당신이 같은 관심이있는 재산에 오류가 있는지 확인 후 이전 절약에 전체 개체의 유효성을 확인 할 수 있습니다 것으로 나타났습니다 :

if t.valid? 
    # Everything is valid. 
else 
    # There were errors, let's see if there were any on the 'wearer' property... 
    puts t.errors.on(:wearer) 
end 

내가 그게 반드시 당신이 찾는 대답은 아니지만, 지금까지 내가 생각해 낸 것 중 최고입니다. 내가 더 나은 것을 찾으면 다시 게시 할 것입니다.