【发布时间】:2026-02-17 13:10:02
【问题描述】:
我有 2 个模型,需要查询以下字段。
-
Customer:first_name:last_name:address:email
-
Relatives:first_name:last_name:address:title
一个Customer 有很多Relatives。
我正在尝试编写一个 search() 方法,该方法将返回 Customer 记录的集合,其中 任一 Customer 的字段或其中 1+ 的相关 Relatives 匹配查询。
目标是能够迭代Customer 记录的集合。如果customer.relatives.present?,我会知道循环通过Customer 提供的相关Relative 模型 - 该集合中的模型与查询匹配。
我目前有这样的事情:
class Customer < ActiveRecord::Base
has_many :relatives
def self.search(params={})
cols = %i(address caseworker last_name)
conds = []
cols.reject! { |col| params[col].blank? }
conds << cols.collect { |col| "clients.#{col} like ?" }.join(" or ")
cols.each { |col| conds << "%#{params[col]}%" }
query = self.send(:where, conds)
# @todo query relatives here!
end
end
我卡住的地方:
- 我不知道要加入/合并/联合/(我不知道我要查找的术语)与搜索不匹配的
Customer模型,但 这样做 有一个匹配搜索的Relative。- 我相信我需要在
Relative模型上几乎相同的search()- 我相信我可以写 - 但我再次不确定如何填写上面的@todo以仅急切加载匹配的Relative查询。
- 我相信我需要在
我正在寻找正确方向的任何颠簸。
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-4 arel