使用neo4jrb/neo4j gem (8.x),我知道可以像这样在单个事务中运行多个查询
person = Person.find_by(id: person_id)
Neo4j::ActiveBase.run_transaction do |tx|
person.update(name: 'New name')
person.update(number: 1)
end
但是可以打开一个事务,然后跨多个块使用同一个事务。就像是:
person = Person.find_by(id: person_id)
transaction = Neo4j::ActiveBase.new_transaction
transaction.run do |tx|
person.update(name: 'New name')
end
transaction.run do |tx|
person.update(number: 1)
end
transaction.close
之所以需要此功能,是因为我在Trailblazer-Operation中使用了 Neo4jrb 。开拓者操作被分解为离散的步骤,这些步骤本身被编写为单独的方法。我想要几个步骤包含在一个事务中,但是,如果没有猴子修补操作,我没有能力在一个事务块内执行一些步骤。
谢谢!