2012-10-01 36 views
0

我有一個「公司」資源。當用戶註冊一個免費帳戶時,他們只需輸入一個電子郵件地址。當他們想升級他們的賬戶時,我需要從他們那裏獲得更多的細節,比如他們的地址。如何最好地模擬這個?如何最好地模擬一個公司,它的地址在Ruby on Rails

  1. 將地址詳細信息存儲在公司表中?
  2. 有一個單獨的「地址」表與一對一的映射與公司,升級 將在地址上的新動作?
  3. 在升級帳戶的公司資源上創建一個操作,並獲取地址信息?
  4. 創建一個名爲「升級」的新資源,將附加地址信息 添加到公司表中?

感謝

回答

1

「溢價」 應該從 「是/代表公司」 隔開。我會用一個單獨的Company模型去,有足夠的領域供地址等

一個Company然後將屬於:userUser將有一個:company

如果您需要提示哪些字段用於地址,請參閱adr微格式(http://microformats.org/wiki/adr)。

1

我可以看到你有一個單獨的地址模型或只是存儲在公司。就我個人而言,我可能會選擇有一個單獨的模型,因爲在任何給定的系統中,很可能您將擁有與多個模型關聯的地址。另一個好處是它有助於從公司分離與地址有關的責任。

我會設置您的驗證這樣的:

Class Company 
    has_one :address 
    validates_presence_of :address, :if => :upgraded? 
    validates_presence_of :email 
    ... 
    private 

    def upgraded? 
    <true if user has upgraded, else false> 
    end 
end 
+0

你會是什麼型號的升級行動?它可以安靜地完成嗎? – pingu

+0

我會對公司進行升級操作。您可以通過一個標識公司是否升級的字段(即布爾名稱「升級」或稱爲「狀態」的字符串)來安全地執行此操作。用戶與網站或網頁API或其他內容交互的界面是什麼? – f1sherman