gpt4 book ai didi

mysql - rails/mysql - 我如何消除 ActiveRecord::StatementInvalid 错误?

转载 作者:可可西里 更新时间:2023-11-01 08:01:18 25 4
gpt4 key购买 nike

我正在编写代码来处理已读/未读消息,使用一个简单的 user_id/message_id mysql 表来处理已读/未读状态。

当用户查看消息时,我执行

Reading.create(:user_id => uid, :message_id => mid)

在 user_id/message_id 字段组合上有唯一索引,所以当 Readings 中的条目已经存在时,我得到关于重复条目的 ActiveRecord::StatementInvalid 错误。

现在我可以添加

unless Reading.exists?(:user_id => uid, :message_id => mid)
Reading.create(:user_id => uid, :message_id => mid)
end

但我想这会在 INSERT 之前再添加一个 SELECT 查询

我宁愿只有一个 INSERT,即使它失败也没有错误报告(我想 REPLACE 最好,但据我所知,它在 ActiveRecord 中不可用)。

最佳答案

拯救它

begin
Reading.create(:user_id => uid, :message_id => mid)
rescue ActiveRecord::StatementInvalid => error
raise error unless error.to_s =~ /Mysql::Error: Duplicate/
end

这有点难看,但会起作用。考虑收紧 unless 中的正则表达式以准确匹配您遇到的错误类型。

关于mysql - rails/mysql - 我如何消除 ActiveRecord::StatementInvalid 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2423885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com