我怎样才能创建像这样的索引
ajaxUniversal( datos, url, callback ).then( function(data){
//manipulate data here
});
使用迁移的语法?
我使用下面的语法创建,它是在数据库
上创建的CREATE INDEX index_companies_on_addresses_on_zipcode ON companies USING gin ((addresses -> 'zipcode'));
但是当我看到schema.rb索引不存在时。
我试过
execute "CREATE INDEX index_companies_on_addresses_on_zipcode ON companies USING gin ((addresses -> 'zipcode'));"
但它只在列地址(是一个jsonb)上创建一个索引,而不是在密钥zipcode上。
答案 0 :(得分:2)
AFAIK没有办法让add_index
理解那种索引。不要害怕,有办法解决这个问题。您正在使用jsonb
,因此无需担心数据库的可移植性,因此您可以从db/schema.rb
切换到db/structure.sql
来管理架构。 db/structure.sql
文件几乎是数据库结构的本机SQL转储,因此它将包含数据库理解的所有内容(CHECK约束,高级索引,......)。
这个过程非常简单:
修改config/application.rb
以设置架构格式:
class Application < Rails::Application
#...
config.active_record.schema_format = :sql
#...
end
正常运行使用execute
的迁移。您希望在迁移中使用单独的up
and down
methods或在通常的change
方法中使用reversible
,因为ActiveRecord不会知道如何自行撤消execute some_raw_sql
。
这会留下db/structure.sql
个文件,因此请将其添加到修订控件并删除db/schema.rb
。
使用不同的rake
任务来处理structure.sql
而不是schema.rb
:
db:structure:dump
代替db:schema:dump
db:structure:load
代替db:schema:load