after_save 콜백에 관한 문제를 다루고 있습니다. 나는 쉬운 해결책이 있다고 확신하지만, 그것을 이해할 수는 없다.Rails 콜백 after_save 속성을 설정하지 않음
나는 User, Product, Bid의 3 가지 모델을 가지고 있습니다. Product 테이블에는 "사용 가능"인 부울 필드가 있으며 기본값은 true로 설정됩니다. 사용자가 입찰가를 지정하면 사용 가능한 입력란은 false로 설정되어야합니다. 입찰가 모델에서 콜백과 함께 작동해야한다고 생각했습니다. 콘솔에서 사용할 수있는 필드에 액세스하여 설정할 수 있습니다. b = Bid.last b.product.available = false => false 그러나 컨트롤러를 통해 변경할 수 없으므로 콜백을 실행하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까? 도움을 주셔서 감사합니다.
product.rb
class Product < ActiveRecord::Base
has_one :bid
belongs_to :user
end
bid.rb이
class Bid < ActiveRecord::Base
attr_accessible :product_id, :user_id, :product
belongs_to :product
belongs_to :user
after_save :set_product_status
def set_product_status
self.product.available = false
end
end
bids_controller.rb이 입찰이 속한
...
def create
@user = current_user
product = Product.find(params[:product_id])
@bid = @user.bids.build(product: product)
respond_to do |format|
if @bid.save
...
고맙습니다! 그게 효과가 있었어! product.available = false product.save 그래서 "self"- 참조를 필요로하지 않는 것 같습니다. 도움을 주셔서 감사합니다. –