Rails - 如何使用Squeel搜索关联的属性

时间:2013-06-01 21:44:13

标签: ruby-on-rails squeel

我认为这是一个简单的问题:

我有一个建筑模型,每个建筑 has_one 城市和每个城市 belongs_to 建筑物。我想使用Squeel搜索建筑物的城市名称(而不是id)。

目前我有:

where{(zip =~ "%#{search}%") | (Building.all.map(&:city) =~ "%#{search}%")}

通过邮政编码搜索工作正常,因为这是建筑模型的直接属性。这是我正在努力的第二个条款。

现在,我收到了这个错误:

Cannot visit NilClass

我该如何使这项工作?

1 个答案:

答案 0 :(得分:1)

您只需加入城市表即可过滤城市字段。

where{(zip =~ "%#{search}%") | (city.name =~ "%#{search}%")}.joins{city.outer}

如果所有建筑物都有一个城市,您可以删除外部联接。