Case-insensitive unique index in Rails/ActiveRecord?

前端 未结 8 1608
天命终不由人
天命终不由人 2020-12-09 03:38

I need to create a case-insensitive index on a column in rails. I did this via SQL:

execute(
   \"CREATE UNIQUE INDEX index_users_on_lower_email_index 
    O         


        
8条回答
  •  自闭症患者
    2020-12-09 04:04

    For Rails 4.2, create case-insensitive unique index in users table on name column.

    Create new migration file with empty change method:

    $ rails generate migration add_index_in_users_on_name
    

    Add call of add_index method to empty change method:

    add_index :users, 'lower(name)', name: 'index_users_on_lower_name', unique: true
    

    Run Rake db:migrate task:

    $ rake db:migrate
    

    In result, index will be added correctly and file db/schema.rb contains correct add_index:

    add_index "users", ["LOWER(\"NAME\")"], name: "index_users_on_lower_name", unique: true
    

    This tested only with RDB Oracle.

提交回复
热议问题