带有rails的neo4jrb --api:返回连接的节点

时间:2016-12-07 04:12:48

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

超级简单的设置:

  • 使用--api创建了一个新的rails应用,并添加了生成器/框架
  • 创建了一个单独的模型(Artefacts),其name属性与has_many关系到其他Artefacts(名为.artefacts
  • 创建了2个节点,并加入了它们(node1.artefacts = node2

现在,当浏览到/artefacts时,返回的JSON只是2个节点。

  • Rails如何返回关系
  • 并继续前进; Rails如何返回自定义JSON布局,例如:

    [{"artefact":{"name":"Node1","id":"e6571172-889c-4dd9-abca-a522f28c970d", artefacts: ["0643d8c5-fc67-431c-b015-7c5894439058", "5e7ceb40-18da-474e-8fe0-22d3887943b4"]}}]

1 个答案:

答案 0 :(得分:1)

这一切都取决于你如何序列化。默认情况下,Rails将序列化节点对象。您应该可以使用此处为include

建议的ActiveRecord选项

Include associated model when rendering JSON in Rails

我个人也喜欢序列化对象的json:api标准。其中一个重要优点是,您可以包含关联对象,并且对象可以有效地进行侧载,这样您就不会在响应中包含重复项。我喜欢它的另一件事是它是标准,而当我过去在应用程序中呈现JSON时,它通常只是开发人员所做的事情。那张卡片以为最好。

jsonapi-resources宝石很受欢迎:

https://github.com/cerebris/jsonapi-resources

gem会照顾很多Rails集成并为您创建控制器和路由,但与ActiveNode的集成存在一些问题。我已成功使用jsonapi-serializers宝石,但它需要您为自己做更多的事情:

https://github.com/fotinakis/jsonapi-serializers

你可能会看看它的Rails示例:

https://github.com/fotinakis/jsonapi-serializers#rails-example