我有以下型号:
class User
include Neo4j::ActiveNode
end
我只想在创建时指定主键:
user = User.create(id: SecureRandom.uuid)
但是,这不起作用并返回Undefined properties: id
。
我尝试过使用自定义id_property
定义:
class User
include Neo4j::ActiveNode
id_property :user_id
end
虽然这有效但在执行User.create
时不会提供默认ID。所以我试过了:
class User
include Neo4j::ActiveNode
id_property :user_id, auto: :uuid
end
将分配默认的uuid,但不再允许User.create(user_id: xxx)
!
这让我抓狂!我在这里错过了什么吗?
答案 0 :(得分:1)
这是gem的一个长期问题,您无法在节点上设置自己的ID。
SecureRandom.uuid
只是一个例子吗?因为它恰好用于:uuid
策略(这是id
属性的默认值)。我不确定你要做的是什么。
GraphAware UUID插件很棒,但我不知道它如何与想要生成它自己的ID的gem一起使用。您可以创建自己的UUID生成器,它只生成nil
值并让插件设置ID(此时gem不关心该值,只要它'现在和独特)。不幸的是,宝石不能依赖于它所使用的所有Neo4j服务器上安装的插件。
希望有一天在不久的将来,Neo4j将支持不会被回收的ID,这样宝石就不需要拥有它自己的UUID逻辑