을 절약 할 수before_create 아직도 내가 당신의 도움을 주셔서 감사하고 싶습니다 모든 전에
나는이 같은 모델 :이 테이블에 사용자와 제품에 연결이라고 Carted_Products을 주문을 구입하는 저장
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
그림을
을 작성하기 전에을 실행하기 전에 레코드가 이미 존재하는 경우 컨트롤러가 전달한 ammount를 추가하는 테이블의 레코드를 업데이트하고 싶습니다. , 하나까지 만들어, 지금까지 완료, 그것을 업데이 트하지만, ammount를 업데이 트하지만 순서에 전달 된 매개 변수와 함께 새로운 하나를 생성, 난 단지 레코드를 찾을 때 두 작업을 수행하지 않기를 원합니다
thnx 양해
편집:
업데이트 속성 후 false를 반환 시도, 그것은 필터를 취소하고, 작성 해달라고하거나 업데이트는 객체 형태로 저장되는 것을 방지하기 위해 before_create
필터에
이전에 False를 반환하면 업데이트를 만들지 않거나 만들지 않고 그냥 필터를 취소하고 시도해보십시오. thnx tho –
정말입니까? [rails docs] (http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html#label-Canceling+callbacks)는 다음과 같이 말합니다. * before _ \ * 콜백이 false를 반환하면 모든 후속 콜백 및 관련 콜백 작업이 취소됩니다. * – mogelbrod
예, 다른 항목을 저장하지 않고 그냥 되돌릴 때 모든 액션을 취소합니다 : add_amount –