2012-02-29 10 views
1

カスタムDataMapper設定者で、設定している値が有効かどうかを確認したいと思います。例えば1つの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

は、ここで私がこれまでに見つけた最高のソリューションです。

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 

I:私はあなたが保存前にオブジェクト全体の有効性を確認し、あなたがそうのようなことに興味があるプロパティにエラーがあるかどうかを確認することができることを見出した

t.wearer.valid? 

それが必ずしもあなたが求める答えではないことを知っていますが、それは私が今までに思いついた最高のものです。私は何か良いものが見つかると私はポストバックします。

関連する問題