如何覆盖ruby neo4j节点主id
我有以下型号:如何覆盖ruby neo4j节点主id,ruby,neo4j,neo4j.rb,Ruby,Neo4j,Neo4j.rb,我有以下型号: class User include Neo4j::ActiveNode end 我只想在创建时指定主键: user = User.create(id: SecureRandom.uuid) 但是,这不起作用,返回未定义的属性:id。 我已尝试使用自定义的id\u属性定义: class User include Neo4j::ActiveNode id_property :user_id end 虽然这样做有效,但在执行User.create时,它不会提供默认i
class User
include Neo4j::ActiveNode
end
我只想在创建时指定主键:
user = User.create(id: SecureRandom.uuid)
但是,这不起作用,返回未定义的属性:id
。
我已尝试使用自定义的id\u属性
定义:
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\u id:xxx)
这快把我逼疯了!我在这里遗漏了什么吗?这是gem的一个长期问题,您不能在节点上设置自己的id
SecureRandom.uuid
只是一个例子吗?因为这正是:uuid
策略所使用的内容(这是id
属性的默认值)。我不知道你想达到什么目的
GraphAware UUID插件很棒,尽管我不知道它将如何与想要生成自己ID的gem一起工作。您可能可以创建自己的UUID生成器,它只生成nil
值,并让插件设置ID(此时gem不关心该值,只要它存在且唯一)。不幸的是,gem不能依赖于它所使用的所有Neo4j服务器上都安装了该插件
希望在不久的将来有一天Neo4j将支持不会被回收的ID,这样gem就不需要拥有自己的UUID逻辑使用不是一个选项?嘿,Bruno;)不知道这会有什么帮助,这是爪哇的不?嗨,皮埃尔!不是。它是Neo4j数据库的插件。事实上,您可以在“嵌入式模式/Java开发”中使用GraphAware UUID。在这种模式下,您将下载GraphAware Neo4j框架和GraphAware Neo4j UUID.jar的jar文件。然后将这个jar文件粘贴到/plugins目录中,并编辑neo4j.conf文件中的一些行,如前所述。完成此过程后,Neo4j数据库将自动为您的节点和关系创建和分配uuid。我基本上希望允许客户端指定uuid,而不是由服务器生成ITID。如果客户端不提供uuid,服务器默认生成uuid我现在能想到的最佳解决方案是使用用户提供的ID创建一个单独的属性。然后,您可以使用一个方法返回该属性,或者,如果该属性为零,则返回节点自动生成的
uuid