我在两个类之间有两种类型的关系。在其中一个中,我需要建立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
图形
关系的类型是默认关系("#" +方法的名称)。
答案 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
应该是什么,因为您还没有提供足够的信息来说明A
和B
是什么意思来说明他们的关联意味着什么
答案 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
这是一个很好的解决方案吗?请评论。