2014-11-22 34 views
1

有许多方法可以得到节点和关系,甚至查找关系的模式本身基于关系属性(如EnrolledIn.where(since: 2002)但什么是应该做获得基于特定属性的关系的最佳途径节点例如Neo4j的宝石 - 查询特定关系

CURRENT_USER - [:关系] - >事件

我知道事件ID等对我来说,最合乎逻辑的方法是查询与event.id图案为一体正在搜索的属性我现在有这样的东西

event_rel = current_user.events(:e, :rel).where(id: event_id).pluck(:rel)

以上不工作,则返回一个数组

回答

0

你在做什么是好的,pluck(:rel)总是会返回一个数组。如果你知道你只需要一个相对,只是做

event_rel = current_user.events(:e, :rel).where(id: event_id).limit(1).pluck(:rel).first 

如果您使用从GitHub主分支,可以使用first_rel_to方法,它(连同match_to)正在改变我使用的方式最近宝石。

event_rel = current_user.events.first_rel_to(event_id) 

前两天增加了给它一个ID的能力,如果你从Rubygems中提取它,它将不起作用。 3.0.4中的方法版本不接受一个I​​D,它只接受一个完整的节点。如果您碰巧装载了节点,则可以在发布的版本中执行event_rel = current_user.events.first_rel_to(event)

如果你不想使用采摘,你可以做event_rel = current_user.events.where(id: event_id). limit(1).each_rel.first。请注意,如果您省略了limit(1),那么这将会将这两个节点之间的每个rel都返回给Ruby,因此,除非您知道只打算返回,否则不要使用它。当我这样做时,我通常会添加limit(1),即使我只是认为我会得到一个rel,因为我喜欢安全。

我建议你点你的Gemfile在最近提交在Github上,刚刚通过的关于4.0的变化维基新的部分阅读。它很稳定,新功能非常酷。

+0

我们无法得到它与勇气方法工作之上,但与最新的更新到创业板,我们可以使用'event_rel = current_user.events.first_rel_to(事件)' – Clam 2014-11-23 08:58:24