0

multipolgyon である 1 つの列で、postgres db にテーブルを作成したいと考えています。それ、どうやったら出来るの?

私がすることは、これが原因で失敗します undefined method multipolygon for #<ActiveRecord::ConnectionAdapters::PostgreSQLTableDefinition:0x4ac6f70>::

この移行の使用:

class CreateBezirkes < ActiveRecord::Migration
  def change
    create_table :bezirkes do |t|
      t.string :NameK
      t.integer :BezNr
      t.string :Bez_Rz
      t.string :Namek_Num
      t.string :Namek_Rz
      t.string :NameG
      t.string :Label
      t.integer :Bez
      t.integer :District_Code
      t.integer :StatAustria_Bez_Code
      t.integer :StatAustria_Gem_Code
      t.float :Flaeche
      t.float :Umfang
      t.timestamp :Akt_Timestamp
      t.multipolygon :Koordinaten
      t.integer :main_id
    end
    execute <<-SQL
      ALTER TABLE bezirkes
          ADD CONSTRAINT fk_bezirkes_mains
          FOREIGN KEY (main_id)
          REFERENCES mains(id)
    SQL
  end
end
4

3 に答える 3

2

postgis gemを使用できます。これは、優れた空間メソッドを提供するRgeoに基づいています。

それ以外の場合は、次のようにします。

 t.column :koordinaten, :multipolygon

注: Rails の規則に従って、列名を大文字で始めないでください。

于 2012-11-10T17:13:42.110 に答える
1

まず、activerecord-postgis-adapter gem がインストールされていること、および Postgresql データベースが postgis で適切に構成されていることを確認しましょう (このチュートリアルに従って)。postgis のインストールはグローバルではなくスキーマごとであることを強調したいので、スキーマ A にインストールしても、同じマシン上の他のスキーマにインストールされるわけではありません。

次に、いくつかのバージョンの postgit アダプターにはマルチポリゴン列を作成する方法がないようです (少なくとも私のものにはありません)。そのため、2 つのオプションがあります: geomerty/geography 列を使用します (対応する方法がありますが、データは失われます) PostgreSQL 側でチェックする)、または一般的な t.column メソッドを使用して、次のように列を作成します。

t.column :Koordinaten, :multipolygon

お役に立てれば。

于 2012-11-10T17:13:25.647 に答える