与关系的起源问题

时间:2014-12-24 15:11:36

标签: ruby neo4j neo4j.rb

我在两个类之间有两种类型的关系。在其中一个中,我需要建立origin,但我不知道如何。有人想过吗?

class A
  include Neo4j::ActiveNode
  ...
  has_many :out, :method1, model_class: B
  has_many :out, :method2, model_class: B
  ...
end

class B
  include Neo4j::ActiveNode
  ...
  has_one :in, :something, model_class: A, origin: ?????
  ...
end

图形

关系的类型是默认关系("#" +方法的名称)。

http://i.imgur.com/3MtC0k3.png

2 个答案:

答案 0 :(得分:2)

如果您查看the documentation on declaring origins我认为您遇到的问题是您尚未宣布second parameter that sets the method

因此,在您的班级A中,您可能希望这样做:

has_many :out, :somethingHere :type1, model_class: B

然后在B中,你可能想要这样做:

has_one :in, :something, model_class: A, :origin: :somethingHere

我无法告诉您somethingHere应该是什么,因为您还没有提供足够的信息来说明AB是什么意思来说明他们的关联意味着什么

答案 1 :(得分:0)

我最终制作了自己的方法。它类似于:

class A
  include Neo4j::ActiveNode
  ...
  has_many :out, :method1, model_class: B
  has_many :out, :method2, model_class: B
  ...
end

class B
  include Neo4j::ActiveNode
  ...
  # I removed has_one line and include:
  def something
    rel = rels(dir: :incoming).first
    return nil if rel.nil?
    rel.start_node
  end
  ...
end

这是一个很好的解决方案吗?请评论。