私はまだRSpecの学習に取り組んでいるので、何かが完全に見落とされていたら申し訳ありません...
多くの材料を含むレシピのテストを書いています。成分は実際にはパーセントとして追加されるため (調合の合計 % 列を使用)、保存するたびに合計列が更新されるようにしたいと考えています。
したがって、現在、recipe_ingredient モデルの RSpec テストには次のようなものがあります。
it "should update recipe total percent" do
@recipe = Factory.create(:basic_recipe)
@ingredient.attributes = @valid_attributes.except(:recipe_id)
@ingredient.recipe_id = @recipe.id
@ingredient.percentage = 20
@ingredient.save!
@recipe.total_percentage.should == 20
end
保存したばかりのレシート成分のクイック更新を呼び出す after_save メソッドがあります。それは非常に簡単です:
編集: この update_percentage アクションはレシピ モデルにあります。材料を保存した後に呼び出すメソッドは、そのレシピを検索してから、このメソッドを呼び出します。
def update_percentage
self.update_attribute(:recipe.total_percentage, self.ingredients.calculate(:sum, :percentage))
end
私は何かを台無しにしていますか?テストの実行時に親オブジェクトにアクセスできないのですか? 保存後に親レシピ名を変更する基本的な方法を実行しようとしましたが、うまくいきませんでした。きっと私が見落としていた関係の何かだと思いますが、すべての関係は正しく設定されています。
ヘルプ/アドバイスをありがとう!