ruby on rails - after_save callback: TypeError: Bid can't be coerced into Fixnum -
i have after_save callback in bid model, keep getting error: typeerror @ /items/11/bids bid can't coerced fixnum
below bid model:
class bid < activerecord::base belongs_to :user belongs_to :item validates :amount, presence: true validate :check_if_highest_bid after_save :bid_logic def check_if_highest_bid errors.add(:amount, "you must enter higher bid") unless self.item.price < self.amount end def bid_logic add_previous_bidders_bid update_items_current_price subtract_current_users_price end def add_previous_bidders_bid price = self.item.price bid = bid.find_by_amount(price) unless bid.nil? user = user.find(bid.user_id) user.budget += bid user.save end end def update_items_current_price self.item.price = self.amount self.item.save end def subtract_current_users_price user = user.find(self.user_id) user.budget -= self.amount user.save end end
the idea in add_previous_bidders_bid method when past users gets out bid, money goes users budget thats set @ registration.
here schema:
create_table "bids", force: true |t| t.datetime "created_at" t.datetime "updated_at" t.integer "item_id" t.integer "user_id" t.integer "amount" end create_table "items", force: true |t| t.datetime "created_at" t.datetime "updated_at" t.integer "user_id" t.string "title" t.integer "price" end create_table "users", force: true |t| t.string "email", default: "", null: false t.string "encrypted_password", default: "", null: false t.string "reset_password_token" t.datetime "reset_password_sent_at" t.datetime "remember_created_at" t.integer "sign_in_count", default: 0 t.datetime "current_sign_in_at" t.datetime "last_sign_in_at" t.string "current_sign_in_ip" t.string "last_sign_in_ip" t.datetime "created_at" t.datetime "updated_at" t.integer "budget" end add_index "users", ["email"], name: "index_users_on_email", unique: true add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true end
any tips?
try user.budget += bid.amount
instead of user.budget += bid
- doesn't know bid...
Comments
Post a Comment