レコードを保存した後に利益を計算する関数をほとんど作成しようとしていません。 は私が3つのコントローラと3つのモデルを持っている:私はセルズテーブルに保存した後に、データベース内のいくつかの計算を保存したい Rails 4モデルで変数を使用した保存後の関数
証券
BELONGS_TO、購入、売却、証券 購入をして売ります。 だから私は販売モデルでclass Sell < ActiveRecord::Base
belongs_to :stock
after_save :calculate_selled_stock, :reset_to_zero, :calculate_benefit
before_save :check_amount
#validate :validate_amount
validates :amount, numericality: { only_integer: true, greater_than_or_equal: 0 }
private
def calculate_benefit
self.update_attribute(:zysk, 400)
end
def calculate_selled_stock
Stock.find(stock_id)
stock.increment! :value, totalprice
stock.decrement! :amount, amount
end
def check_amount
item = Stock.find(stock_id)
return false unless item
errors.add(:amount, "Error message")
item.amount_available?(self.amount)
end
def reset_to_zero
item = Stock.find(stock_id)
item.update_attributes(:amountvalue => 0, :amoutbuys => 0) if item.amount_zero?(self.amount)
end
end
ことをやろうでした。しかし、あなたが作成しようとした後、それが無限ループのために行くだろう。 これを変更したり、いくつかの変数を追加するにはどうすればよいですか?あなたがafter_save
方法をキックオフあなたの在庫を更新し続けるので、私はあなたが問題に実行されていると信じて
def calculate_benefit
var1 = 400
var2 = var1*20
self.update_attribute(:zysk, var2)
end
リピートに感謝します。私は作成時にのみこれをチェックします。あなたが提案したとおりに変更しましたが、それはまだ同じです。私のコードのどこかで間違いがあります。 SystemStackError(スタックレベルが深すぎる)... – nikos83
これが公開リポジトリの場合は、 –