0

我試圖讓與同一學校(用戶對象的字符串)的用戶的所有活動,但我得到的錯誤是這樣的:Rails的用戶列加入

燦」將'Activity'加入到名爲'users'的關聯中;或許你拼錯了 呢?

activity_controller.rb

@school = current_user.school 
@bathroom = Activity.includes(:users).where(name: 'Bathroom').where(:user => { :school => @school}) 

和架構:

create_table "activities", force: :cascade do |t| 
    t.string "name" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    t.integer "student_id" 
    t.string "status" 
    t.integer "user_id" 
    t.index ["student_id"], name: "index_activities_on_student_id" 
    t.index ["user_id"], name: "index_activities_on_user_id" 
    end 

    create_table "users", force: :cascade do |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, null: false 
    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",       null: false 
    t.datetime "updated_at",       null: false 
    t.string "name" 
    t.string "grade" 
    t.string "school" 
    t.integer "maxout" 
    t.index ["email"], name: "index_users_on_email", unique: true 
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true 
    end 

回答

0

usersuser因爲Activity屬於User

@bathroom = Activity.includes(:user).where(name: 'Bathroom').where(:users => { :school => @school}) 

User有許多activities所以User.includes(:activities)

當然,你必須提供關聯:

class Activity 
    belongs_to :user 

class User 
    has_many :activities 
+0

現在我得到的ActiveRecord':: StatementInvalid活動#學校的SQLite3 ::的SQLException:沒有這樣的列:user.school' – beaconhill

+0

嘗試'Activity.joins(:用戶)'而不是'includes' –

+0

'SQLite3 :: SQLException:no such column:user.school:SELECT「activities」。* FROM「activities」INNER JOIN「用戶「ON」用戶「。」id「=」activities「。」user_id「WHERE」activities「。」name「=?和「user」。「school」=?' – beaconhill