我有以下协会
class Location < ActiveRecord::Base
has_many :items
end
class Item < ActiveRecord::Base
belongs_to :location
end
假设我有一些位置实例,我要查询的所有项目都属于这些位置。目前我设法将结果作为一个数组
items =[]
Location.near(latitude,longitude,distance).find_each do |location|
location.items.find_each do |item|
items << item
end
end
但是,有什么方法可以让我得到 ActiveRecord::Relation 的结果。因为我想通过在 ActiveRecord::Relation 中使用“where”来进一步查询结果。
PS“near”方法来自geocoder gem,它返回一个ActiveRecord::Relation。
- - - - - - - - - - -编辑 - - - - - - - - - - - - - -
感谢您的回复 我几乎找到了解决方案
locations = Location.near(latitude,longitude,distance)
Item.where(location_id: locations.pluck(:id))
这是正确的方法吗?对我来说,这有点不直观。
----------------------再次编辑 -------------- -
只是一个小评论:我说这是不直观的,因为我正在从 DataMapper 切换。如果是Datamapper,那就很简单了,比如
Location.near(blabla).items
通过关联进行查询非常简单。对比Datamapper,不明白为什么ActiveRecord关联这么没用?