1

私はこのクラスを持っています

class RelatedExternalDe
  include Neo4j::ActiveNode

  property :eid
  property :name
  property :source
  validates :eid, presence: true

  has_many :in, :related_data_elements, type: 'related_external_de',  model_class: RelatedDataElement, unique: true

end

次に、コントローラーでノードを取得します。ビューに正しく表示されているため、ノードは正しく取得されます。

コントローラーのコードは次のとおりです。

@external_data_elements = RelatedExternalDe.search(params[:search])
@external_data_elements.each do |external_de|
   external_de.related_data_elements
end

次のエラーが表示されます: undefined method `related_data_elements' for # RelatedExternalDe:0x007fefa4fd6b78>

クエリを実行する代わりに RelatedExternalDe.find_by を使用してみましたが、同じ結果が得られました。ここで、新しい「RelatedExternalDe.new」でオブジェクトを作成すると、すべてが機能するように見えます。私が間違っていることは何ですか?

4

2 に答える 2

0

何が悪いのかわかりません。すべてが正しいように見えます。ただし、いくつかの考えがあります。

neo4j/ gems のどのバージョンneo4j-coreを使用していますか?

結果を反復処理して関連付けを呼び出すだけなのはなぜですか? それは単なるデモコードですか?そうでないと意味がないように思えます。

次のように Symbol または String を使用することをお勧めしmodel_classます。

  has_many :in, :related_data_elements, type: 'related_external_de',  model_class: :RelatedDataElement, unique: true

ロードオーダーの問題に対処するためだけに。

どれも役に立たない場合 (そして、残念ながらそうはならないだろうと思います)、Gitter チャット ルーム ( https://gitter.im/neo4jrb/neo4j ) でより迅速に対応できるかもしれません。

于 2015-10-07T20:12:21.050 に答える
0

また、'@related_elements ||= Array.new' を実行する related_elements メソッドを単純に持つことができ、それを呼び出して配列を取得し、他のメソッドを必要とせずに追加することができます

于 2015-10-07T21:51:30.367 に答える