我有一个属于主题模型的评论模型。在 Comment 模型上,我有一个 before_create 回调
def on_create
Topic.transaction(:require_new => true) do
Topic.connection.execute('SET TRANSACTION ISOLATION LEVEL SERIALIZABLE')
self.topic.increment!(:comment_counter) if conditions
end
end
问题是我得到了ActiveRecord::StatementInvalid: PGError: ERROR: SET TRANSACTION ISOLATION LEVEL must be called before any query
.
有没有其他方法来设置事务隔离级别?
从 Rails 4 开始,#transaction提供了一个:isolation option:
如果您的数据库支持设置事务的隔离级别,您可以像这样设置:
Post.transaction(isolation: :serializable) do
# ...
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)