Activerecord 保存后的Rails回调未设置属性

Activerecord 保存后的Rails回调未设置属性,activerecord,callback,ruby-on-rails-3.2,Activerecord,Callback,Ruby On Rails 3.2,我正在处理一个后保存回调的问题。我相信有一个简单的解决办法,但我想不出来 我有3个模型:用户,产品,出价。Product表包含一个布尔字段“available”,默认设置为true。如果用户出价,可用字段应设置为false。 我认为这应该与投标模型的回调一起工作。 我可以通过键入以下内容来访问和设置控制台中的可用字段: b=最后一次投标 b、 product.available=false =>错误 但是,我无法通过控制器更改它,因此我认为它不会执行回调。我做错了什么? 谢谢大家的帮助 prod

我正在处理一个后保存回调的问题。我相信有一个简单的解决办法,但我想不出来

我有3个模型:用户,产品,出价。Product表包含一个布尔字段“available”,默认设置为true。如果用户出价,可用字段应设置为false。 我认为这应该与投标模型的回调一起工作。 我可以通过键入以下内容来访问和设置控制台中的可用字段: b=最后一次投标 b、 product.available=false =>错误 但是,我无法通过控制器更改它,因此我认为它不会执行回调。我做错了什么? 谢谢大家的帮助

product.rb

class Product < ActiveRecord::Base

has_one :bid
belongs_to :user
end
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
...
def create
@user = current_user
product = Product.find(params[:product_id])
@bid = @user.bids.build(product: product)

respond_to do |format|
if @bid.save
...

既然出价属于产品,你也应该保存产品

def set_product_status
  self.product.available = false
  self.product.save
end

非常感谢。成功了!我发现,它还可以与:product.available=false product.save一起使用,因此它似乎也不需要“自我”引用。非常感谢你的帮助!