私は2つのモデルUserとCourseを持っています。別のオブジェクトのインスタンスを持つすべてのオブジェクトを選択する方法(has_manyとhas_oneの関連付け)?
ユーザーhas_many
コース。 コースhas_one
ユーザー。
今、私はすべてのユーザーをつかんでコースインデックスページに表示していますが、私はコースを持っているユーザーのみを表示する必要があることに気付きました。私はこれを行う方法がわかりません?ここで
は、コースコントローラからの私のインデックスメソッドである:ここで
#courses_controller.rb
def index
@courses = Course.all
@users = User.all
end
は私のモデルです:
# user.rb
class User < ApplicationRecord
# User has many courses
has_many :courses, dependent: :destroy
end
# course.rb
class Course < ApplicationRecord
has_one :user
validates :user_id, presence: true
end
そして、私のスキーマ:
ActiveRecord::Schema.define(version: 20170505114247) do
create_table "courses", force: :cascade do |t|
t.string "name"
t.string "prerequisite"
t.text "description"
t.integer "user_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "picture"
t.index ["user_id", "created_at"], name: "index_courses_on_user_id_and_created_at"
t.index ["user_id"], name: "index_courses_on_user_id"
end
create_table "users", force: :cascade do |t|
t.string "name"
t.string "email"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "password_digest"
t.index ["email"], name: "index_users_on_email", unique: true
end
end
スキーマを共有してください。あなたの 'コース'と 'ユーザー'はどうつながっていますか? many_to_many関係があるはずです。 –
それでは、ユーザーはコースのインストラクターですか?各コースには1人のユーザーしかいないということです。 –
こんにちは、私はスキーマを追加しました。この協会は1対多です。コースはユーザーに属します。 – helpmeplz