2010-12-03 44 views
0

我想在我的rails應用程序中設計位置屬性的模式。軌道中的位置數據庫模式表

如果這是正確的設計

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

你在問什麼? – 2010-12-03 01:48:44

回答

0

除非你不認爲這是解決您的解決方案特殊原因,語法看起來我的權利。 rails的優點在於,如果它不合適,您可以遷移數據模型以添加更多屬性,因爲您發現需要它們。

2

我想這取決於您希望模型如何與您的表單進行整合。 我假設位置模型中的數據由用戶填充,通過對雅虎/谷歌或從靜態的郵政編碼查找表進行地理編碼。

任何方式在這裏是我的位置模型的遷移,我通過用戶輸入的郵編(zip)從靜態查找表填充 - 這是通過AJAX調用填充在主窗體中,該窗口將地理編碼請求發送到谷歌如果它不能找到郵政編碼(表現在正相當老)

​​

我與浮點數爲經度/緯度雖然去使用字符串可能只是如果沒有更好的爲好。

我使用了區域,國家和Hpu(衛生保護單位 - 英國nhs服務的英國地區分部)地理分區的單獨模型和表格。

這其中包括限制這些用戶輸入下拉菜單,這仍然可以由管理員編輯(地區和國家是穩定的單位,但Hpus正在名稱更改atm)的許多原因。

其他原因包括擴展地理模型以包括諸如shapefile信息之類的其他信息(爲了渲染單元的邊界 - 由於稍後使用PostGIS導入工具添加shape文件,因此未在此遷移中顯示)以及使用提供的關聯通過這些附加型號

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