すべての前に私はあなたの助けに感謝したいと思います
私はこのようなモデルを持っています:
attr_protected nil
belongs_to :product
belongs_to :user
before_create :add_ammount
def carted_product_price(ammount, price)
ammount * price
end
def add_ammount
carted_product = CartedProduct.where(:product_id => self.product_id, :user_id => self.user_id)
if carted_product
carted_product.first.ammount += self.ammount
carted_product.first.update_attributes(:ammount => carted_product.first.ammount)
else
self.save
end
end
これにより、ユーザーと製品に接続されたCarted_Productsというテーブルに購入注文が保存されます。
問題は、Before createが実行されるときに、テーブル内のレコードを更新して、レコードがすでに存在する場合はコントローラーから渡された量を追加し、存在しない場合は、ivが実行する限り、量を更新しますが、それでも渡されたパラメータを順番に使用して新しいものを作成します。レコードが見つかったときに両方のアクションを実行するのではなく、更新するだけにします。
あなたの忍耐のためのthnx
編集:
属性の更新後にfalseを返そうとしましたが、フィルターがキャンセルされ、属性を作成または更新しません