2014-11-22 99 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