after_save コールバックの問題に対処しています。簡単な解決策があると確信していますが、わかりません。
ユーザー、製品、入札の 3 つのモデルがあります。Product テーブルには、デフォルトで true に設定されているブール フィールド「available」が含まれています。ユーザーが入札した場合、利用可能なフィールドは false に設定する必要があります。これは、入札モデルのコールバックで機能するはずだと思いました。次のように入力して、コンソールの利用可能なフィールドにアクセスして設定できます。 b = Bid.last b.product.available = false => false ただし、コントローラー経由で変更できないため、コールバックを実行しないと思います. 私は何を間違っていますか?ご協力ありがとうございました!
product.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
...