{{ message }}
Support case-insensitive uniqueness validations under MySQL#39
Open
dmeranda wants to merge 3 commits into
Open
Support case-insensitive uniqueness validations under MySQL#39dmeranda wants to merge 3 commits into
dmeranda wants to merge 3 commits into
Conversation
In MySQL individual columns can be case-insensitive, according to their collation type qualifier, without regard to any index. Rails already provides a case_sensitive? method on columns via the AbstractMysqlAdapter module.
…lation. When determining whether a uniqueness validation should be case insensitive, we only want to consider the column's own reported case-sensitivity if it is a true property of the column, i.e., due to its collation/character set. The schema_plus_columns gem monkey patches in its own version of case_sensitive?, for PostgreSQL, that determines this based upon the properties of ANY indexes in which the column participates. That method does NOT correctly take into account the index scope. Since in PostgreSQL it is possible to have a column participate in two indexes, one being case-sensitive and another being case-insensitive, it is important to always consider the scope. This does not matter with MySQL.
Old text implied case-insensitivity is only supported with that gem. But now MySQL case-insensitive validations will work without any extra gems.
Member
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

This is a proposed fix for issue #38
I'm not sure how to proceed writing a test spec for this. It should only be run with against a MySQL database, and furthermore may require creating a table using raw SQL (execute) rather than as a rails schema migration/load; because a proper test will rely on the MySQL
COLLATIONtype qualifier which is not exposed by the schema loader/dumper (though it is a read-only property of the Column type).The example code presented in the issue would probably serve as a good basis for a test.