Rails / Scope搜索连接表

时间:2014-08-16 04:03:21

标签: ruby-on-rails search activerecord scope

尝试设置轻量级搜索引擎,在模型上使用自己的属性设置范围没有问题。让一张连接的桌子玩得很好有一些障碍

       scope :seniority, -> (seniority) { where seniority: seniority }

       # merged scopes
       scope :edu, -> joins(:candidate_schools).where("candidate_schools.degree = #{edu}") }

资历工作正常,因为它是正常的属性。我的最终目标是从关联表(例如

)中渲染用户对象
     http://localhost:3002/api/v1/users?sector=tech&seniority=jr&edu=master

在传递“edu”的参数时,会搜索“candidate_schools”表并根据“degree”属性进行过滤,如果edu参数匹配记录,它将处理“用户”对象

1 个答案:

答案 0 :(得分:1)

将范围更改为:

scope :edu, -> (edu) {
  joins(:candidate_schools).where("candidate_schools.degree = ?", edu) 
}

# usage
User.seniority("jr").edu("master")

不要"candidate_schools.degree = #{edu}",请查看sql injection了解原因。