2013-10-18 56 views
0

我已經多次閱讀過,在Active Record中使用'custom primery key'(除了對象的id之外)不是一個好習慣,而且它必須非常好用小心。數據導入,主要關鍵選擇和主動記錄最佳實踐

這是我的問題:

我正在構建一個Rails應用程序。我必須在我的數據庫中導入諸如:products:countries:regions等對象。

我打算通過CSV導入。有時候,我可能會重置一個表,然後用更多的數據重新導入它。使用代碼而不是ID爲primary_key會非常方便,它可以確保我的數據庫在重新導入數據後仍然一致。我只需要確保日期始終保持相同的code每次我導入它(這將比試圖保持相同id更容易)。

  1. 使用'codes'作爲主鍵有什麼危險?
  2. 是否有'智能'的方式來管理CSV導入,使對象 始終保持相同的ID?
  3. 我的情況最好的做法是什麼?

謝謝。

回答

0

不推薦重寫primary_key,因爲它可能會破壞一些Rails魔法。你也必須寫猴子補丁才能使它工作。我建議創建一個名爲code的新列並對其進行索引。這樣,無論您導入多少次,您的代碼都將保持不變。

您將不得不使用Region.find_by_code(code)Region.find_by_code!(code)來做你的查詢。如果沒有找到記錄,bang方法(帶'!'的方法)將引發異常,類似於Region.find(id)