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

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

java - Copying object fields -

c++ - Clear the memory after returning a vector in a function -