0

私のプロジェクトでは、PaymentConditionというモデルとPaymentPortionというモデルがあります。 PaymentConditionhas_manypayment_portionsおよびPaymentPortionbelongs_topayment_condition新しい属性値を使用してbefore_updateを検証する

私は新しいPaymentConditionを作成するときに、私はn個payment_portionsを作成し、このメソッドを持っています。 nの値は、の値PaymentConditionです。

たとえばと新しいPaymentConditionを作成すると、2 payment_portionsになります。

これまでのところ、とても良いです。

私の問題:

私は、このビューにネストされたフォームを使用していますので、私は一度にすべてを編集することができます。

PaymentConditionには、catchmentsという属性があります。

PaymentPortionには、catchmentという属性があります。

このフォームをsubmiting前に、私は合計PaymentPortion.catchmentPaymentCondition.catchmentsに等しいかどうかを確認したいと思います。もしそうでなければ、私はエラーを起こさなければならない。

今のように、私は私がpayment_conditions_controller内でこれをやっている

...それを保存する前にPaymentConditionの新しい値を取得することはできません。

和を用い
before_update :check_catchments 

def check_catchments 
    errors.add(:catchments, "Values must check") unless catchments_check? || new_record? 
end 

def catchments_check? 
    catchment == portion_catchments 
end 

def portion_catchments 
    payment_portions.sum(:catchments) 
end 

()、私はデータベース上の値だけを取得します。私が必要とするのは、送信されている値です...

どうすればいいですか?

ありがとうございます。

答えて

0

コントローラで直接動作している可能性がありますか? ARオブジェクトを作成するには、 'build'や 'first_or_initialize'などのメソッドを使用できます。次に、コントローラーでそれらを検証し、必要に応じてデータを保存します。

+0

これは私が考えた最初の事実です。 2番目のビューはビュー上でjavascriptを使ってこのバリデーションを行うことです...他のすべてのバリデーションがモデル内で行われているので、私はこれを行う方法があると思いました。 – ThalesMiguel

関連する問題