0

现在我的产品模型有一个类别的字符串列,表单有一个选择,它从产品模型的数组中获取它的值。目前只有三种可能的类别:wood_stoves、arborist_gear 和链锯。我有一个控制器,其中每个控制器都列出了各自类别的产品。

我将类别切换到数据库表并使用 has_many 和 belongs_to 关系在其中嵌套产品,这是我的问题。以下是一个坏主意吗?

  1. 为每个 wood_stoves、arborist_gear 和链锯创建一个记录。
  2. 创建一个迁移,将 products/category 列中的每个值转换为新创建的类别记录中的相应记录 id 整数。
  3. 在迁移中添加一个将 category.string 列更改为 category.integer 列的步骤。
  4. 在迁移中添加必要的向下步骤以恢复所有这些。

简而言之,我应该在迁移中执行所有这些操作以使其可逆,还是应该放弃可逆性并手动对数据库进行更改以避免看起来有些荒谬的迁移,该迁移只能反转与原始类别相对应的产品?换句话说,迁移将无法撤消属于新创建类别的产品。

4

1 回答 1

1

听起来不错。我唯一不同的是坚持 Rails 约定,外键列名以“_id”结尾。那样生活就更轻松了。在您的情况下,category从您的产品模型中删除该列并添加一category_id列。

于 2011-07-11T22:32:40.983 回答