在我之前的例子中,我有了这个查询
current_user.friends.events(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)
current_user.friends.events
让我接触到继续我的链的事件,但是如果我已经拥有一个包含一系列事件的对象,这是否有效?
在我的例子中,我试图使用地理编码器拉近距离。
所以我的用户和事件都是地理编码的。
Geocoder可以做这样的事情
Venue.near([40.71, 100.23], 20)
#在20英里范围内找到所有objs
所以我基本上可以找到所有事件并将其存储在一个对象中。我现在可以使用neo4j查询来过滤该对象吗?
e.g。
array_object(:event, :rel).where("rel.admin = {admin_p} AND event.detail = {detail_p}").params(admin_p: true, detail_p: true).pluck(:event)
即使这样可行,还有另一种方法吗?
答案 0 :(得分:1)
您无法在阵列上调用查询代理方法,因此只需获取这些事件的ID并相应地过滤匹配。
current_user.friends.events(:e).where(neo_id: array_object.map { |e| e.neo_id })
这将过滤用户朋友在该阵列中的事件。我们可以在neo_id
中使用where
以获得更好的效果。