在ActiveRecord关联上使用.where的替代方法?

时间:2016-10-11 11:34:40

标签: ruby-on-rails ruby activerecord

我正在使用Geocoder gem,似乎无法使用where过滤记录集合而不会失去对gem .distance方法的访问权限。

我正在为查询寻找解决方案,例如:

User.includes(:addresses).where("addresses.country = ?", "Poland").references(:addresses)

在这种情况下使用where还有其他选择吗?在简单的find_byfind(id)上过滤记录似乎保留.distance,但我不知道当条件在关联模型上时如何使用/

2 个答案:

答案 0 :(得分:0)

您可以使用find_by_sql。以下是链接文档的示例:

Post.find_by_sql ["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]

答案 1 :(得分:0)

当您查看文档和github issue 1108 for gem Geocoder时,distnace看起来像是一个方法,而不是一个范围。你必须改变你的代码:

Address.near(location).includes(:model).where(something).each do |address|
  address.distance
end