2

这个回答https://stackoverflow.com/a/973785/1297371的问题:How to set Sqlite3 to be case insensitive when string comparison? 告诉如何使用“COLLATE NOCASE”列创建表。

我的问题是如何在 Rails 迁移中创建这样的列?即如何从

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?
4

2 回答 2

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' 是我的表

于 2013-04-02T20:34:06.593 回答
0

对于搜索的人,如果您的 rails 版本中仍然没有“collat​​e”(您将获得“Unknown key: :COLLATE”),那么您必须手动创建索引:

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

在你的'def up'中('drop_table'也会在你的'def down'中删除索引)

于 2016-07-06T07:59:31.760 回答