Ruby on rails - 如何在 Neo4j.rb 中定义这些所有者/成员关系



我正在尝试弄清楚如何在我的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
首先,

您应该确保使用的是昨天刚刚发布的 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

就个人而言,我还建议将关联名称设置为 teamsowned_teams,因为它创建了用于从用户对象获取这些团队的方法。

相关内容

  • 没有找到相关文章

最新更新