我正试图弄清楚如何在我的Neo4j.rb Active :: Node模型中定义这些所有者/成员关系。
到目前为止,我有类似的东西,但它不能正常工作,我完全迷失了。
class User
include Neo4j::ActiveNode
has_many :out, :my_teams, model_class: 'Team'
end
class Team
include Neo4j::ActiveNode
property :name, type: String
has_one :in, :owner, model_class: 'User'
end
user = create(:user)
team = build(:team)
user.my_teams << team
expect(team.owner).to eq user
答案 0 :(得分:4)
首先你要确保你使用的是昨天刚刚发布的5.0.0宝石(是的!)
其次(您在升级时应该收到有关此内容的错误消息),您应该为关联指定type
选项,如下所示:
class User
include Neo4j::ActiveNode
has_many :out, :my_teams, type: :OWNS_TEAM, model_class: 'Team'
end
告诉ActiveNode
用于创建和查询的关系类型。
最后,对于创建,您可以在模型类上使用类方法,如下所示:
user = User.create
team = Team.create
user.my_teams << team
在一些有点挑剔的个人注释中,我还建议使用teams
或owned_teams
的关联名称,因为它会创建用于从用户对象中获取这些团队的方法。