我认为这是一个简单的问题:
我有一个建筑模型,每个建筑 has_one 城市和每个城市 belongs_to 建筑物。我想使用Squeel搜索建筑物的城市名称(而不是id)。
目前我有:
where{(zip =~ "%#{search}%") | (Building.all.map(&:city) =~ "%#{search}%")}
通过邮政编码搜索工作正常,因为这是建筑模型的直接属性。这是我正在努力的第二个条款。
现在,我收到了这个错误:
Cannot visit NilClass
我该如何使这项工作?
答案 0 :(得分:1)
您只需加入城市表即可过滤城市字段。
where{(zip =~ "%#{search}%") | (city.name =~ "%#{search}%")}.joins{city.outer}
如果所有建筑物都有一个城市,您可以删除外部联接。