레코드를 저장 한 후 이점을 계산하는 기능을 거의 만들지 않으려 고합니다. 나는 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
재생 해 주셔서 감사합니다. 나는 이것을 create.I에서만 확인합니다. 당신이 제안한대로 변경되었지만 여전히 동일합니다. 어딘가에서 내 코드에 실수가 있어야합니다. SystemStackError (스택 수준이 너무 높음) ... – nikos83
공개 레포 인 경우 살펴볼 수 있습니다. –