尝试在并发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,让我试试看。