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

我收到以下错误:#RelatedExternalDe:0x007fefa4fd6b78> 的未定义方法“related_data_elements”

我尝试使用 RelatedExternalDe.find_by 而不是运行查询,我得到了相同的结果。现在,如果我用新的“RelatedExternalDe.new”创建了一个对象,一切似乎都可以工作。任何想法我做错了什么?

4

2 回答 2

0

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

您使用的是什么版本的neo4j/ gems?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

于 2015-10-07T20:12:21.050 回答
0

此外,您可以简单地拥有一个相关的元素方法,它执行 '@related_elements ||= Array.new' 然后您可以调用它来获取他的数组并附加到它而不需要其他方法

于 2015-10-07T21:51:30.367 回答