【发布时间】:2023-03-10 06:00:01
【问题描述】:
我正在尝试为我的候选模型构建高级搜索器。
让我们想象一下它有几个字段 + 多个关联,例如 has_many: languages 和 has_many: skills。现在我正在构建这样的查询:
query = Candidate.select("*")
if position_name
query = query.where('position_name LIKE ? OR position_name IS NULL',"%#{position_name}%")
end
if salary
query = query.where('salary <= ? OR salary IS NULL',salary)
end
等等……
现在我想添加更高级的条件,例如查找仅具有 PHP 和 Java 等技能的用户(因此仅返回具有这两种技能的用户)
这有效,但只有当我插入 OR
query = query.joins(:skills)
query = query.where('`skills`.`name` = ? OR `skills`.`name` = ?',"Java","PHP")
另外,我希望语言也一样(另外,语言有 language.name 和 language.level)
有人能告诉我看哪个方向吗?以及如何建立这样的条件,我可以多种技能或多种语言?
【问题讨论】:
-
您可能真的想考虑使用像 Thinking Sphinx 这样的搜索引擎,因为它使这样的任务变得微不足道,而且搜索速度也很快。
-
我会试试这个。谢谢。
标签: sql ruby-on-rails activerecord associations