Ruby on rails 事务的唯一性验证
我使用事务来保存酒店模型。下面是一个代码:Ruby on rails 事务的唯一性验证,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我使用事务来保存酒店模型。下面是一个代码: def init Hotel.transaction do @hotel.save! create_related_models end end 我在酒店的:name上进行了唯一性验证。验证不是事务内部的工作。在事务中实现数据库相关验证的方法是什么 解释为什么验证不起作用 当用户提交表单时,请求大约需要10秒。如果他在请求期间单击另一时间(保存按钮),则他将保存两个同名酒店(这是问题)。这是因为当另一个事务开始时,第一个事务没
def init
Hotel.transaction do
@hotel.save!
create_related_models
end
end
我在酒店的:name
上进行了唯一性验证。验证不是事务内部的工作。在事务中实现数据库相关验证的方法是什么
解释为什么验证不起作用
当用户提交表单时,请求大约需要10秒。如果他在请求期间单击另一时间(保存按钮),则他将保存两个同名酒店(这是问题)。这是因为当另一个事务开始时,第一个事务没有完成。因此,当另一次启动时,数据库中没有酒店,因此验证返回true,您需要:
我想添加锁定机制,但结果太难了。感谢所有的解决方案。目前我添加了javascript按钮块,但我也将实现您的第一个解决方案(约束和处理错误)