我有两列存储字符串,:column_a
和:column_b
。
我知道我能做到:
add_index :table, [:column_a, :column_b], unique: true
但是,我需要实现以下目标:
add_index :table, [:column_a, 'lower(column_b)'], unique: true
当我尝试迁移时,这当然会出错。
我收到lower(column_b)
不是列的错误。
我正在使用PostgreSQL。
老实说,在这一点上,我正在考虑只有一个名为column_b_lowercase
的列,我将其编入索引。
答案 0 :(得分:0)
我决定只使用SQL。这是代码。
class AddUniqueIndexingForLowercaseColumn < ActiveRecord::Migration
def self.up
execute "CREATE UNIQUE INDEX table_column_a_lowercase_column_b_index ON table(column_a, lower(column_b))"
end
def self.down
remove_index :table, :table_column_a_lowercase_column_b_index
end
end