如何在hstore列中的键上添加索引?

时间:2013-10-16 16:53:35

标签: ruby-on-rails postgresql ruby-on-rails-4 hstore

观看http://railscasts.com/episodes/345-hstore

我决定实现一些hstore列。

从我的理解

execute "CREATE INDEX products_gin_properties ON products USING GIN(properties)"

或写得更好(Rails 4):

add_index :products, :properties, using: :gin

两者都只在hstore列上创建索引。

如何在hstore列中的键上添加索引?看看周围,我可以做类似的事情:

execute "CREATE INDEX products_properties_name ON products (properties -> 'name')"

但是,有没有Rails 4方法来做到这一点?

1 个答案:

答案 0 :(得分:3)

在这里查看源代码:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb#L418

    def add_index(table_name, column_name, options = {}) #:nodoc:
      index_name, index_type, index_columns, index_options, index_algorithm, index_using = add_index_options(table_name, column_name, options)
      execute "CREATE #{index_type} INDEX #{index_algorithm} #{quote_column_name(index_name)} ON #{quote_table_name(table_name)} #{index_using} (#{index_columns})#{index_options}"
    end

index_columns是以逗号分隔的列列表。

它似乎不受支持。