对多对多关系进行搜索查询

时间:2015-08-20 06:14:22

标签: ruby-on-rails ruby

我可以和你分享我的头衔吗?我正在尝试使用这段代码进行搜索。 (带箭头的线)

def index
    search = params[:user][:subject_ids]
---->   @users = User.includes(:subjects).where(role: 'instructor')
    @user = current_user
end

这是一个多对多的关联。我有用户,入学和科目。我有教师,他们已经报名参加了1-5门课程。当我进行搜索时,我会获得所有教师的列表,而不仅仅是那些教我所查询的主题的教师。

不知道从哪里开始。

协会

class User < ActiveRecord::Base
  has_many :enrollments, dependent: :destroy
  has_many :subjects, through: :enrollments
end
class Subject < ActiveRecord::Base

  has_many :enrollments, dependent: :destroy
  has_many :users, through: :enrollments

end
class Enrollment < ActiveRecord::Base 

  belongs_to :user
  belongs_to :subject

end

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

您忘记将搜索参数放在查询中。 你的行应该是这样的:

@users = User.includes([:enrolments,:subjects]).where("user.role" => 'instructor', "subjects.id" => search)