0

現在我的產品模型有一個類別的字符串列,表單中有一個select,它從產品模型的數組中獲取它的值。現在只有三種可能的類別:wood_stoves,arborist_gear和鏈鋸。我有一個控制器,針對每個列出各自類別產品的操作。將某些硬編碼文件更改爲活動記錄模型的好方法是什麼?

我將類別切換到數據庫表格,並用has_many和belongs_to關係嵌套產品,這裏是我的問題。以下是一個壞主意嗎?

  1. 爲每個wood_stoves,arborist_gear和鏈鋸創建記錄。
  2. 創建一個遷移,將產品/類別列中每個列的值轉換爲新創建的類別記錄中對應的記錄ID整數。
  3. 向遷移添加一個將category.string列更改爲category.integer列的步驟。
  4. 向遷移添加必要的向下步驟以恢復所有這些。

總之,我應該做的這一切都在遷移所以它是可逆的,或者我應該放棄可逆性和手動進行更改的數據庫,以避免有些可笑的看遷移,將只能夠扭轉的產品,對應於原始類別?換句話說,遷移將無法逆轉屬於新創建類別的產品。

回答

1

聽起來不錯。我唯一會做的不同是堅持Rails約定,使外鍵列名以「_id」結尾。生活就這麼簡單。在你的情況下,從您的產品型號中刪除category列,並添加一個category_id列。

+0

我不打算刪除列,只需將其名稱更改爲常規:category_id,並將其類型更改爲整數。 – Preacher

相關問題