1

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

我有一个建筑模型,每个建筑都有_一个城市,每个城市都属于_建筑。我想使用 Squeel 对建筑物的城市名称(而不是 id)进行搜索。

目前我有:

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

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

现在,我收到此错误:

Cannot visit NilClass

我怎样才能使这项工作?

4

1 回答 1

1

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

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

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

于 2013-06-01T22:05:49.410 回答