2009-06-28 8 views
0

は... リクエストパラメータと一致しないモデル属性はどのように処理すればよいですか?私はこのようなモデルを持っている

Receipt 
------- 
amount:int # => An amount of money stored as cents. 

しかし、私はこれらのフィールドを持つビューで

...

amount_dollars 
amount_cents 

だから、質量割り当てが機能しません。

このような状況を処理する標準的な方法は何ですか?入ってくる値をセントに換算するコードはどこに置いていますか?

答えて

1

amount_dollarsとamount_centsのattr_accessorsを追加します。 amountを更新するには、before_saveコールバックを使用します。

+0

ありがとうございました。 – Ethan

0

ビュー内のこれらの各フィールドに、いわゆる仮想属性を定義することができます。

def amount_dollars=(value) 
    ... 
end 

def amount_cents=(value) 
    ... 
end 

これらは、送信されたフォームからの値を処理します。これらの各方法では、モデルの金額属性を適切に変更します。

+0

どのように機能しますか?あなたが何セントになるのかを知らずにamount_dollars =(value)を呼び出すと、金額が正しく設定されません。 – Ethan

3

仮想属性を探している可能性がありますか?

それについての鉄道があります。

watch it hereとすることができます。

あなたが好きな場合に備えて、text-based version of itもあります。

+0

+1確かに仮想属性の候補になります。 –

+0

ありがとうございます。 Railscastを見て仮想属性を試しましたが、逆の意味ではなく、2つのUIフィールドに1つのDB列がマッピングされていたため、問題がありました。 – Ethan

関連する問題