尝试在并发ruby线程上创建ActiveRecord.create不会持久化

尝试在并发ruby线程上创建ActiveRecord.create不会持久化,ruby,activerecord,ruby-on-rails-5,Ruby,Activerecord,Ruby On Rails 5,这是一个非常有趣的问题,我不知道为什么会发生这种情况 我的课程类似于: require 'concurrent' class DuplicationCheck include Concurrent::Async def check_duplication(params) # Time intensive check Duplication.create(params) # This create does not insert into the DB wh

这是一个非常有趣的问题,我不知道为什么会发生这种情况

我的课程类似于:

require 'concurrent'

class DuplicationCheck
  include Concurrent::Async

  def check_duplication(params)
    # Time intensive check
    
    Duplication.create(params)  # This create does not insert into the DB when run Async!
  end
end
因此,下面的调用工作正常,复制返回一个id:

replicationcheck.new.check\u replication(参数)

下面的调用没有像我预期的那样工作,它异步运行,这很好,但不会将复制记录插入数据库

replicationcheck.new.async.check\u replication(params)

没有错误,但调试后,ActiveRecord似乎正在内存中创建对象,但没有持久化


任何帮助都将不胜感激

.create()
始终返回一个对象,即使该对象未能创建记录(例如,验证失败)。如果将其更改为
,请创建
在异步情况下是否会出现异常?很好@rmlockerd,让我试试看。
.create()
始终返回一个对象,即使它无法创建记录(例如,验证失败)。如果将其更改为
,请创建在异步情况下会出现异常吗?很好@rmlockerd,让我试试看。