我有这个类
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 '然后你可以调用它来获取数组并对其进行追加而不需要另一个方法