Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何覆盖ruby neo4j节点主id_Ruby_Neo4j_Neo4j.rb - Fatal编程技术网

如何覆盖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