2012-04-08 6 views
0

私は、非ActiveRecordカスタムモデル(2つの属性を持つ単純なクラス)の配列からなる直列化フィールドを含むActiveRecordモデルを持っています。Ruby on Rails 2.3非ARモデルをフォームパラメータから移植して検証する

私は母集団と一緒に各シリアライズされたアイテムの人口と検証を統合する方法を見つけようとしていますが、そのためのエレガントな方法はありません。

シリアライズされたモデルの「初期化」メソッドは、「属性」ハッシュを受け取り、単純にそれらのクラス属性に値を設定します。これは、フォームからデータを受け取ったときに、実際のタイプではなく文字列データとして受け取られるという事実に加えて、まあまあです。 ActiveRecordモデルはこれに対処する方法を認識しており、 のモデルインスタンスがdbに保存される前にスキーマに基づいて型キャストを行います。 ARモデルに類似した動作をさせるために、私ができることはありますか(「初期化」メソッドの型キャストの隣にありますか?

また、NON AR-Modelの検証に「Validatable」宝石を使用しようとしていますが、「validates_numericality_of」を使用して番号が大きいと定義すると、 0

よりも、それまでに渡すことができ、「もし」パラメータがありますが、実行するとき、それはその後numericalityチェック前に発生して:

validates_numericality_of :price, :if => lambda { self.price >= 0.0 }, :message => "Price must be greater or equal to 0" 

私は「価格の中の文字列を入力した場合"フィールドは、モデルが有効かどうかをチェックしようとすると、" price "が文字列で、それを比較しようとしているので例外がスローされます数字に...

希望です。私は1つのスレッドで2つの質問をしました...しかし、彼らは関連性があります。

おかげ

+0

これまでに解決したことがありますが、インスタンスのコンテキストではなくクラスのコンテキストでコードが評価されるため、変数でモデルインスタンスを取得する必要があります。 – rubish

答えて

0

あなたはself.price.to_iを試みたことがありますか?

関連する問題