Ruby 关系起源的问题

Ruby 关系起源的问题,ruby,neo4j,neo4j.rb,Ruby,Neo4j,Neo4j.rb,两个类之间有两种类型的关系。在其中一个例子中,我需要建立原点,但是我不知道如何建立。有人知道吗 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, :somethi

两个类之间有两种类型的关系。在其中一个例子中,我需要建立
原点
,但是我不知道如何建立。有人知道吗

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
图形

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

如果你看一下,我认为你面临的问题是,你没有宣布一项计划

因此,在类
A
中,您可能希望执行以下操作:

has_many :out, :somethingHere :type1, model_class: B
has_one :in, :something, model_class: A, :origin: :somethingHere
然后在
B
中,您可能需要执行以下操作:

has_many :out, :somethingHere :type1, model_class: B
has_one :in, :something, model_class: A, :origin: :somethingHere

我不能告诉你这里的某个东西应该是什么,因为你没有提供足够的关于
A
B
的信息来说明它们之间的关联意味着什么。有点像:

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

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

这是答案。
origin
选项使关联在相应模型上查找另一个同名关联。首先使用
has_one:in,:something,model_class:A,origin::method1
,然后使用
has_one:in,:something,model_class:A,origin::method1
。something将使用
method1
作为它的关系类型。问题是,如果你把
origin::method1
放进去,所有具有传入
method2
关系的B都将返回
nil
。你感觉到我了吗?如果它起作用,它就起作用了。我不打算反驳它,但是当框架提供钩子来定义这样的方法时,定义这样的自定义方法对你来说确实很奇怪。是的,我不明白为什么这是必要的。见我对弗罗博比回答的评论。如果您需要额外的帮助,可以给我发电子邮件,我是Neo4j gem的维护者之一。