0

I have two models: User and FutureAuction

class FutureAuction < ActiveRecord::Base
 has_and_belongs_to_many :users
end

class User < ActiveRecord::Base
  has_and_belongs_to_many :future_auctions
  devise :database_authenticatable, :registerable,
     :recoverable, :rememberable, :trackable, :validatable     
end

Also I have migration:

class CreateUsersAuctions < ActiveRecord::Migration
   def change
     create_table :users_auctions, id: false do |t|
        t.belongs_to :future_auction, index: true
        t.belongs_to :user, index: true
     end
   end
 end

So, when I try call user.future_auctions I get error 'undefined method future_auction for '. What's problem? My schema

ActiveRecord::Schema.define(version: 20151122192558) do
   enable_extension "plpgsql"

   create_table "future_auctions", force: :cascade do |t|
     t.string   "title",                      null: false
     t.string   "img_url",    default: ""
     t.float    "price",                      null: false
     t.boolean  "is_ended",   default: false, null: false
     t.datetime "created_at",                 null: false
     t.datetime "updated_at",                 null: false
     t.integer  "user_id"
     t.datetime "start_date",                 null: false
     t.datetime "end_date",                   null: false
   end
create_table "users", force: :cascade do |t|
   t.boolean  "is_admin",               default: false, null: false
   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,     null: false
   t.datetime "current_sign_in_at"
   t.datetime "last_sign_in_at"
   t.inet     "current_sign_in_ip"
   t.inet     "last_sign_in_ip"
   t.datetime "created_at",                             null: false
   t.datetime "updated_at",                             null: false
   t.string   "login",                                  null: false
   t.integer  "rates_count",            default: 0
 end

add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree

create_table "users_auctions", id: false, force: :cascade do |t|
   t.integer "future_auction_id"
   t.integer "user_id"
end

add_index "users_auctions", ["future_auction_id"], name: "index_users_auctions_on_future_auction_id", using: :btree
add_index "users_auctions", ["user_id"], name: "index_users_auctions_on_user_id", using: :btree

I call this in erb file like this

<% if current_user.future_auctions.empty? %>

or I call this when I want get user's login

<%= future_auction.users.last.login %>

In both ways I get error

Oleg Ryabtsev
  • 457
  • 2
  • 9
  • 24

0 Answers0