2012-01-10 12 views
1

これはデータベースモデルではありません。オブジェクトの配列を持つ非データベースモデルの検証

class UserApplication::CoApplicant 

    include ActiveModel::Validations 
    include ActiveModel::Conversion 

    attr_accessor :applicant, :first_name, :last_name, :email 



    def initialize(attributes = {}) 
    attributes.each do |name, value| 
     send("#{name}", value) 
    end 
    end 

    def persisted? 
    false 
    end 
end 

私はオブジェクトの配列を渡すことを望んでいます。このようなものです。

"applicant"=>{"0"=>{"email"=>"[email protected]", "last_name"=>"Jackson", "first_name"=>"Shaun"}, "1"=>{"email"=>"[email protected]", "last_name"=>"Davis", "first_name"=>"Dave"}} 

私が抱えている問題は、それぞれのオブジェクトを検証する方法が登場しています。これらの値は、動的に生成されたテーブルに由来する

です。範囲は1〜10行です。

"0"と "1" - テーブル行を表します。そして、各セットを検証するために探しています

{email、first_name、last_name}の属性を確認しています。

これまでにこのタイプの検証を行う必要はありませんでした。

答えて

2

それぞれのインスタンスをインスタンス化して検証する必要があるようです。これはあなたのソース配列に基づいて、それらを作成するのと同じくらい簡単でなければなりません:

def initialize(attributes = {}) 
    attributes.each do |name, value| 
    send("#{name}=", value) 
    end 
end 
+0

ありがとう:

applicant_data = applicants['applicant'] applicant_data.each do |id, attributes| applicant = applicant.new(attributes) applicant.valid? end 

はまた、あなたが"#{name}"方法、ない#{name}=メソッド呼び出しているあなたの割り当てで間違いを持っ​​ていますたくさんの人、とても助かりました。なぜこのような苦労があったのか分かりませんが、あなたはそれを直ちにクリアしました。 – davissp14

+0

私はいくつかの私のソリューションとあなたが提供したソリューションの前に、この問題に直面しました。 "UserApplicationには一定の応募者が見つかりません!"私が他のソースから読んだところから、これはレール<3.1のバグですか?あなたはこれを経験しましたか、それについて何か知っていますか? – davissp14

+1

ここを見てください:[例](http://stackoverflow.com/questions/4056894/rails-production-env-object-is-not-missing-constant) – tadman

関連する問題