0

2 つのクラス間に 2 種類の関係があります。そのうちの 1 つで、 を確立する必要がありますが、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

4

2 に答える 2

2

オリジンの宣言に関するドキュメントを見ると、あなたが抱えている問題は、メソッドを設定する2番目のパラメーターを宣言していないことだと思います。

したがって、あなたのクラスAでは、これをしたいかもしれません:

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

次に、Bで次のようにします。

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

何が何を意味するかsomethingHereについて十分な情報を提供していないため、何をすべきかはわかりません。AB

于 2014-12-24T15:24:23.573 に答える
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

それは良い解決策ですか?コメントしてください。

于 2014-12-24T17:41:45.763 に答える