我能够通过此
从这个原始问题Neo4j gem - Preferred method to deal with admin relationship进行特定模式匹配Event.query_as(:event).match("(event)<-[invite:invited]-(user1:User)<-[friends_with:friends_with]-(user2:User)").where('invite.admin = true').pluck(:event)
我无法获得这样的修改版本
current_user.friends.events.query_as(:event).match("(event)<-[invite:invited]-(user:User)").where(invite: {admin: true}).pluck(:event)
所以我实际改变的是我改变了邀请类中from_node
和to_node
的方向
from_class User
to_class Event
type 'invited'
之前设置为从Event
到User
。我的一个问题是,为什么我必须更改它以使查询工作? has_many: both
是不是意味着这个方向无关紧要?
另一个变化是将我的关系类型更改为小写。在我的模型中,它是全部用小写字母写的,似乎很重要。我认为两者都会像neo4j那样转换成全部大写,但就像现在一样,它没有。
我认为我需要使current_user方法正常工作,因为我只想要current_user的朋友的事件。建议?
答案 0 :(得分:2)
好的,我正在混淆两种不同风格的查询
例如,在您已经链接到lesson
s.lessons(:l, :r).where("r.start_date < {the_date} and r.end_date >= {the_date}").params(the_date: '2014-11-22').pluck(:l)
这样的事情
Student.query_as(:s).where("s.age < {age} AND s.name = {name} AND s.home_town = {home_town}").params(age: params[:age], name: params[:name], home_town: params[:home_town]).pluck(:s)
注意放置.
和query_as
与lessons(:l, :r)
部分
我的最终查询消除了任何match
组件,因为我已经处于我正在查询的关系和节点。所以它看起来像这样。
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)
我仍然希望回答上面的一些问题!