尚未将对 Rails 固定装置的支持放入neo4j
gem 中。它实际上是一个我们还没有加入的 ActiveRecord 功能。首先,我建议查看 factory_girl:
https://github.com/thoughtbot/factory_girl
它提供了一个更加动态且易于维护的系统,用于在测试中定义工厂和创建对象。当然,这意味着您的测试会变慢,因为它们需要为每个测试进行数据库调用,而不是像夹具那样在开始时设置对象。
很多人进入“一种方式必须更好”的心态,并说您需要使用固定装置或工厂。我认为在一个项目中实际上两者都有空间。固定装置非常棒,尤其是对于您知道总是会在那里的物体。它们最大的问题之一是在进行测试时需要参考您的夹具文件。
在您的编辑中,您提到固定装置不支持关系。这并不完全正确。ActiveRecord 设备支持在 YAML 中定义属性,这些属性指定关联的值。在 ActiveRecord 中,关联是通过外键/连接表来管理的,但在 Neo4j 中,它们只是通过关系完成的。所以我想同样的结构会很好。如果你想解决这个问题,我会记住几件事:
在 ActiveRecord 固定装置中,您可以直接指定外键列,也可以通过它的名称指定关联并引用它的标识符,如下所示:
### in pirates.yml
reginald:
name: Reginald the Pirate
monkey_id: 123
# OR
monkey: george
### in monkeys.yml
george:
name: George the Monkey
使用 ActiveRecord 固定装置,这些标识符实际上被散列为一个整数,然后该整数始终用于数据库中该记录的 ID。这使得设置关联变得容易。可能需要对 neo4j.rb 进行一些类似的解决方法。请注意,ActiveNode 模型具有默认uuid
属性,因此可能会被覆盖,但您需要确保不会影响用户的自id_property
定义定义。