Я пишу код для обработки прочитанных/непрочитанных сообщений с простой таблицей user_id/message_id mysql для обработки состояния чтения/чтения.rails/mysql - как отключить ActiveRecord :: Ошибка StatementInvalid?
, когда пользователь просматривает сообщение, я исполняю
Reading.create(:user_id => uid, :message_id => mid)
есть уникальный индекс на user_id/message_id полой комбинацию, поэтому, когда запись в чтениях уже существует, я получаю ActiveRecord :: StatementInvalid ошибки о дубликате записи ,
теперь я мог бы добавить
unless Reading.exists?(:user_id => uid, :message_id => mid)
Reading.create(:user_id => uid, :message_id => mid)
end
, но я себе это добавляет один более ВЫБЕРИТЕ запроса перед INSERT
я предпочел бы иметь только один INSERT, и никаких сообщений об ошибках, даже если это не удается (I Думаю, REPLACE будет лучше, но afaik он недоступен в ActiveRecord).