我有这个班级
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的未定义方法`related_data_elements':0x007fefa4fd6b78>
我尝试使用RelatedExternalDe.find_by而不是运行查询,我得到了相同的结果。现在,如果我用新的“RelatedExternalDe.new”创建一个对象,一切似乎都有效。 我有什么想法吗?
答案 0 :(得分:0)
我不确定出了什么问题,一切看起来都对我不对。不过我有几点想法:
您使用的是哪个版本的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
答案 1 :(得分:0)
此外,您可以简单地使用related_elements方法执行'@related_elements || = Array.new'然后您可以调用它来获取数组并附加到它而无需其他方法