尝试设置轻量级搜索引擎,在模型上使用自己的属性设置范围没有问题。让一张连接的桌子玩得很好有一些障碍
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参数匹配记录,它将处理“用户”对象
答案 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了解原因。