0

PostGIS を正常にインストールし、postgres_extgem を使用して Rails postgisActiveRecord アダプターのサポートを追加しましたが、移行で Postgres 配列列タイプを使用しようとすると失敗します。

t.string :pets, :array => true, :limit => 12

そしてエラー:

rake aborted!
An error has occurred, this and all later migrations canceled:

    undefined method `array' for #<ActiveRecord::ConnectionAdapters::ColumnDefinition:0x007fa8357b3308>
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activesupport-3.2.9/lib/active_support/core_ext/object/try.rb:36:in `try'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/postgres_ext-0.0.9/lib/postgres_ext/active_record/connection_adapters/postgres_adapter.rb:197:in `add_column_options!'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/schema_definitions.rb:38:in `add_column_options!'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/schema_definitions.rb:31:in `to_sql'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-postgis-adapter-0.4.3/lib/active_record/connection_adapters/postgis_adapter/spatial_table_definition.rb:76:in `block in to_sql'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-postgis-adapter-0.4.3/lib/active_record/connection_adapters/postgis_adapter/spatial_table_definition.rb:76:in `map'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-postgis-adapter-0.4.3/lib/active_record/connection_adapters/postgis_adapter/spatial_table_definition.rb:76:in `to_sql'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-postgis-adapter-0.4.3/lib/active_record/connection_adapters/postgis_adapter/main_adapter.rb:192:in `create_table'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.9/lib/active_record/migration.rb:466:in `block in method_missing'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.9/lib/active_record/migration.rb:438:in `block in say_with_time'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.9/lib/active_record/migration.rb:438:in `say_with_time'
    /Users/avishai/.rvm/gems/ruby-1.9.3-p194/gems/activerecord-3.2.9/lib/active_record/migration.rb:458:in `method_missing'

Gemfile:

gem "rails", "~> 3.2.9"
gem "airbrake"
gem "pg"
gem "postgres_ext"
gem "activerecord-postgis-adapter"
gem "activerecord-postgres-array", "~> 0.0.8"

これを修正する方法はありますか?

4

1 に答える 1

1

これは既知の問題です。問題は、activerecord-postgis-adapter と postgres_ext が ActiveRecord の PostgreSQL アダプターに対して競合するパッチを持っていることです。これに対する解決策は、postgres_ext または activerecord-postgis-adapter のいずれかを他の gem に依存させることです。postgres_ext を activerecord-postgis-adapter に依存させるのは意味がありません。PostGIS を使用して PostgreSQL のネイティブ データ型を使用する必要がないためです。

(私は postgres_ext gem のメンテナーです。リンクされた問題を開いたのはあなただと気付きました)

于 2013-01-16T13:58:30.067 に答える