【发布时间】:2010-03-11 09:40:23
【问题描述】:
我正在编写一个代码来处理已读/未读消息,并使用一个简单的 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 会是最好的,但 afaik 它在 ActiveRecord 中不可用)。
【问题讨论】:
标签: mysql activerecord