class RescueUniqueConstraint::Adapter::SqliteAdapter
Public Class Methods
new(table_name)
click to toggle source
# File lib/rescue_unique_constraint/adapter/sqlite_adapter.rb, line 4 def initialize(table_name) @table_name = table_name end
Public Instance Methods
index_error?(index, error_message)
click to toggle source
Sample error message returned by ActiveRecord for Sqlite Unique exception: ‘SQLite3::ConstraintException: UNIQUE constraint failed: things.code, things.score: INSERT INTO “things” (“name”, “test”, “code”, “score”) VALUES (?, ?, ?, ?)’
Step1: extract column names from above message on which unique constraint failed. Step2: Check if this index’s field is among those columns.
# File lib/rescue_unique_constraint/adapter/sqlite_adapter.rb, line 13 def index_error?(index, error_message) column_names = error_message.scan(%r{(?<=#{@table_name}\.)\w+}) column_names.include?(index.field) end