2010-12-03 8 views
0

私のレールアプリケーションで位置属性用のスキーマを設計しようとしています。あなたは、これはあなたのソリューションを解決しているとは思わない特別な理由、構文的にそれは私に右に見えるがない限りレール内の位置データベーススキーマテーブル

これは正しい設計

class CreateLocations < ActiveRecord::Migration 

    def self.up 
    create_table :locations do |t| 
     t.string :zip   
     t.string :city,  :null => false 
     t.string :state,  :null => false 
     t.string :country, :null => false 
     t.string :latitude 
     t.string :longitude 
     t.timestamps 
    end 
    end 

end 
+0

あなたは何についてお尋ねしますか? –

答えて

0

であるべき。レールの美しさは、データ・モデルをマイグレーションして、必要な属性を追加することができます。

2

モデルとフォームとの統合方法に依存すると思います。 私は、Locationモデルのデータが、Yahoo/Googleまたは静的なZipcodeルックアップテーブルからのジオコーディングを介して、ユーザーによって入力されていると仮定しています。

ここでは、ユーザーが入力した郵便番号(zip)を介して静的ルックアップ・テーブルから移入するマイ・ロケーション・モデルの移行について説明します。これはAJAXコールによってメイン・フォームに移入されます。 Googleのそれは郵便番号を見つけることができない場合(表は今かなり古くなっている)

​​

文字列を使用すると、おそらくより良い場合は同じように良いではありませんが、私は緯度経度/のための浮動小数点数で行きました。

私は地域、国、Hpu(Health Protection Unit - nhsサービスのための地域部門)の地理区分に別々のモデルとテーブルを使用しました。

これには、これらのドロップダウンメニューのユーザー入力を制限するなど、管理者によって編集可能な理由がいくつかあります(地域や国は安定していますが、Hpusはatmという名前の変更がatmです)。

他の理由は、(単位の境界線を描画するために - シェープファイルをPostGISのインポートツールを使用して、後に追加されるので、この移行には示されていない)は、シェープファイルの情報などの追加情報を含めるために地理モデルを拡大含まれ、提供される関連付けを使用しますこれらの追加モデルによって

class CreateRegions < ActiveRecord::Migration 
    def self.up 
    create_table :regions do |t| 
     t.primary_key :id 
     t.string :name 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :regions 
    end 
end 

class CreateHpus < ActiveRecord::Migration 
    def self.up 
    create_table :hpus do |t| 
     t.primary_key :id 
     t.integer :region_id 
     t.string :name 

     t.timestamps 
    end 
    end 

    def self.down 
    drop_table :hpus 
    end 
end 
関連する問題