访问使用has_many定义的主动节点上的关系时"undefined method"错误



我有这个类

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

我得到以下错误:未定义的方法' related_data_elements' for # relatedexnalde:0x007fefa4fd6b78>

我尝试使用relatedexnalde。find_by而不是运行查询,我得到相同的结果。现在,如果我用新的relatedexnalde创建一个对象。"新"一切似乎都行得通。你知道我做错了什么吗?

我不知道出了什么问题,对我来说一切都是正确的。不过,我有一些想法:

您使用的是哪个版本的neo4j/neo4j-core宝石?

为什么你只是迭代结果并调用关联?这只是演示代码吗?否则看起来就没有意义了。

我建议使用符号或字符串的model_class像这样:

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

只是为了处理负载顺序问题。

如果没有帮助(我怀疑它不会,不幸的是),我们可以更快地帮助你在我们的Gitter聊天室:https://gitter.im/neo4jrb/neo4j

另外,您可以简单地使用一个related_elements方法来执行'@related_elements ||= Array '。New '然后你可以调用它来获取数组并对其进行追加而不需要另一个方法

最新更新