2012-06-26 3 views
2

Этот ответ https://stackoverflow.com/a/973785/1297371 на вопрос: How to set Sqlite3 to be case insensitive when string comparing? рассказывает, как создать таблицу с колонкой COLLATE NOCASE.Как создать столбец «collate nocase» в таблице в миграции?

Мой вопрос заключается в том, как создать такой столбец в миграции рельсов? т.е. как от

create table Test 
(
    Text_Value text collate nocase 
); 

create index Test_Text_Value_Index 
    on Test (Text_Value collate nocase); 

сделать:

create_table :tests do 
    #WHAT HERE? 
end 
add_index #... WHAT HERE? 

ответ

0

Я добавил новую миграцию, где я удален и воссоздан индекс как:

class AddIndexToWordVariations < ActiveRecord::Migration 

    def change 

    remove_index :word_variations, :variation_word 

    add_index :word_variations, :variation_word, :COLLATE => :NOCASE 

    end 

end 

где 'word_variations' мой стол

+0

Предположительно это не на sqlite3 (по крайней мере, не в 2013 году), просто для поиска людей: http://stackoverflow.com/questions/37878967/sqlite3-on-rails-create-table-using -collate-NoCase –

0

Для поиска людей, если «сортировка» по-прежнему недоступна в вашей версии рельсов (вы получите «Неизвестный ключ:: СОРТИРОВКУ»), то вы должны создать индекс вручную:

execute("create index Test_Text_Value_Index on Test (Text_Value collate nocase);") 

В вашем «DEF вверх» (далее «drop_table» будет падение индекса, а также в вашей «Защите down ')

Смежные вопросы