2015-06-11 84 views
1

我目前正在通過this tutorial進行工作,當我在軌道控制檯中創建關係時,我一直陷入困境。我已經閱讀了jayway.com上的Neo4jrb項目文檔和博客文章,但仍然無法弄清楚。如何通過導軌控制檯創建Neo4j關係?

我創建了一個rails站點,並且我想使用我的rails腳本在Neo4j數據庫中創建團隊節點,聯盟節點以及它們之間的關係。我有兩個型號:

一個用於聯盟

class Team 
include Neo4j::ActiveNode 
property :name, type: String 

has_one :out, :league, type: :PLAY_IN 

end 

一個用於團隊

class League 
include Neo4j::ActiveNode 
property :name, type: String 
property :rank, type: Integer 

has_many :in, :teams, origin: :league 

end 

使用軌道控制檯,我可以使用此代碼創建一個節點

League.create(name: "League 2") 

U唱歌的控制檯,我如何創建我的模型中定義的兩個節點之間的關係?

Here is my code in github.在此先感謝!

**編輯**

刪除:model_class

回答

1

有創建維基的ActiveNode部分,https://github.com/neo4jrb/neo4j/wiki/Neo4j%3A%3AActiveNode#associationsAssociations標題下的節點之間的關係的一個例子。你做node_a.association_name << node_bteam.league = leagueleague.teams << team將創建相同的關係,因爲您已將它們設置爲引用數據庫中的相同關係類型和相反方向。

維基中有很多信息,我建議你閱讀所有現代的東西。不要擔心「遺留」部分中的任何內容。新的文檔也在http://neo4jrb.readthedocs.org/en/stable/上工作,但還有一些工作要做。還有一個聊天室https://gitter.im/neo4jrb/neo4j,以防萬一你想通過一些事情來談論。

**編輯**

正如布賴恩指出的那樣,有一個與你的model_class的問題。我專注於你是如何做到的,並沒有仔細觀察模型,看到他的評論信息。

+0

我會添加幾件事情。如果你想把關係的屬性放在 –

+0

上,你也可以使用'team.league.create(other_node,property:value)'。另一件事是我認爲你在關聯聲明中使用'model_class'是不對的。例如,對於你的'Team.league'關聯,你聲明'Team'的'model_class'。然而'model_class'指的是協會的目標,所以它應該是'League'。但在這種情況下,您實際上不需要指定'model_class',因爲關聯名稱':league'會自動猜測'League'爲'model_class'。在其他模式中的協會也是如此 –

+0

真棒,謝謝你們!我刪除了'model_class'。 我也讀過維基,你們已經提出了很多很好的信息!我理論上理解這一點,但在實踐中建立關係時,我仍然有點困惑。我認爲這部分是因爲我仍然在思考密碼。 – Chris