如何确定连接表的范围?

时间:2016-01-21 03:29:07

标签: ruby-on-rails scope backend filterrific

我使用的是filterrific gem,需要确定以下内容。

我有3张桌子。我希望范围用户模型,它返回所有大学名称。所有用户都通过大学。大学是这里的联系表。我的模型如下(Rails 4.2):

    class User < ActiveRecord::Base
     has_many :colleges
     has_many :universities, :through => colleges

     # my current scope which is not working at all
     scope :user_university, -> (user_university){joins(colleges: [ {university: :name}]).where("universities.name = ? ", user_university)}
    end

    class Colleges < ActiveRecord::Base
     belongs_to :user
     belongs_to :university
    end

    class University < ActiveRecord::Base
     has_many :colleges
     has_many :users, :through => colleges
    end

我一直在收到错误,而且我不确定如何通过连接表来确定模型的范围。

1 个答案:

答案 0 :(得分:3)

试试这个:

scope :user_university, -> (university_name) {
  joins(colleges: :university).where(universities: {name: university_name})
}

我将参数user_university重命名为university_name btw,user_university有点令人困惑!