我正在处理 after_save 回调的问题。我确信有一个简单的解决方案,但我无法弄清楚。
我有 3 个模型:用户、产品、投标。Product 表包含一个布尔字段“available”,默认设置为true。如果用户出价,则可用字段应设置为 false。我认为这应该与出价模型的回调一起使用。我可以通过键入以下内容访问并设置控制台中的可用字段: b = Bid.last b.product.available = false => false 但是我无法通过控制器更改它,所以我认为它不会执行回调. 我究竟做错了什么?感谢大家的帮助!
产品.rb
class Product < ActiveRecord::Base
has_one :bid
belongs_to :user
end
出价.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
...