2016-08-28 5 views
0

多くのingredients_changesを持つオブジェクト(recipe_change)を作成しています。しかし、私はソートの自分自身の検証を実行し、彼らが合格しなかった場合、ingredients_changesの作成を防止したいと思います。私はingredient_changesで検証を始めましたが、もしそれが有効なエラーを追加したのであれば?多くのingredients_changesのうちの1つが有効でない場合、変更が送信されないようにします...私は望みません。それでは、私は私のrecipe_changeコントローラにメソッドを作成するには、以下を試してみましたが、これはほとんどそれがループを切断し、残りをしないだろう1を削除した後を除く仕事でした:オブジェクトhas_manyを循環させて特定のオブジェクトを削除します

@recipe_change.ingredient_changes.each do |change| 
     if ...long conditional statement... 
     @recipe_change.ingredient_changes.delete(change) 
     end 
end 

を配列のような機能があります.reject!このような団体のために働く。コードのこの時点では、データベースに保存されず、自分の状態を満たしていない場合、データベースに保存しません。

答えて

1

無効なingredient_changesこのようなモデルrecipe_change中をフィルタリングするためにreject_ifを使用することができます。

class RecipeChange < ActiveRecord::Base 
    has_many :ingredient_changes, reject_if: :invalid_ingredient_change? 

    def invalid_ingredient_change?(attributes) 
    end 
end 

参照:http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

+0

BEA-Utiful ....私が探していたたまさにそのありがとう。 ...あなたがどこで始まるかわからないときに正しいものを探すのは難しい – DRing

+0

お元気です、歓迎:) – kasperite

関連する問題