upsert_all fails cleanly for MySQL
This commit is contained in:
parent
2bbb519482
commit
0daf81f69a
@ -77,7 +77,11 @@ def map_key_with_value
|
||||
attr_reader :scope_attributes
|
||||
|
||||
def find_unique_index_for(unique_by)
|
||||
return unique_by if !connection.supports_insert_conflict_target?
|
||||
if !connection.supports_insert_conflict_target?
|
||||
return if unique_by.nil?
|
||||
|
||||
raise ArgumentError, "#{connection.class} does not support :unique_by"
|
||||
end
|
||||
|
||||
name_or_columns = unique_by || model.primary_key
|
||||
match = Array(name_or_columns).map(&:to_s)
|
||||
|
@ -486,6 +486,15 @@ def test_upsert_all_updates_using_provided_sql
|
||||
assert_equal "written", Book.find(2).status
|
||||
end
|
||||
|
||||
def test_upsert_all_with_unique_by_fails_cleanly_for_adapters_not_supporting_insert_conflict_target
|
||||
skip if supports_insert_conflict_target?
|
||||
|
||||
error = assert_raises ArgumentError do
|
||||
Book.upsert_all [{ name: "Rework", author_id: 1 }], unique_by: :isbn
|
||||
end
|
||||
assert_match "#{ActiveRecord::Base.connection.class} does not support :unique_by", error.message
|
||||
end
|
||||
|
||||
private
|
||||
def capture_log_output
|
||||
output = StringIO.new
|
||||
|
Loading…
Reference in New Issue
Block a user