访问使用has_many

时间:2015-10-06 21:35:24

标签: ruby-on-rails ruby neo4j relationship neo4j.rb

我有这个班级

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”创建一个对象,一切似乎都有效。 我有什么想法吗?

2 个答案:

答案 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'然后您可以调用它来获取数组并附加到它而无需其他方法