2010-11-25 4 views
0

RailsとActiveRecordの新機能では、複数のレベルのリレーショナルモデルを使って検証を適用する方法が不明です。私はすべてのチュートリアルを検索しましたが、1つのモデルだけで検証できます。Rails 3リレーショナルモデルの検証方法

複数のリレーショナルモデルを検証するにはどうすればよいですか?

は一つのモデルはスポーツゲーム内の属性の異なるタイプのfield店と呼ばれる。(例:最終的なスコア、の目標、などに対する目標)と、すべての実際の値を格納し、別のモデルvalue、私は複数のモデルを持っていると言いますfield

にゲームのスコアのようなので、私はvalidatするにはどうすればよい2クラス

class Field < ActiveRecord::Base 
    has_many :value  
end 
class Value < ActiveRecord::Base 
belongs_to :field 
end 

を持っていますe valueの各属性の値は、それに対応するfieldの属性ですか?レール3に

答えて

2

:あなたはあなたのlibディレクトリにファイルを作成(このファイルは、アプリケーションによってロードされていることをそのを確保)し、validateメソッドを持つクラスに入れることができます。すべてにおいて

class HumanValidator < ActiveModel::Validator 

    def validate(record) 
    record.errors[:base] << "This person is dead" unless check(human) 
    end 

    private 

    def check(record) 
     (record.age < 200) && (record.age > 0) 
    end 

end 

# app/models/person.rb 
class Customer < ActiveRecord::Base 
    validates_with HumanValidator 
end 

Goはこれを読んlink text

soure、レール3における検証の新規性のために、:あなたが検証するモデルは、次のようなクラスのと検証を呼び出します
+0

libディレクトリ内のすべてのファイルを自動的にロードするには、config/application.rbファイルにconfig.autoload_paths + =%W(#{Rails.root}/lib)を追加します。 – plehoux

関連する問題