将一些硬编码文件更改为活动记录模型的好方法是什么?

时间:2011-07-11 22:06:26

标签: ruby-on-rails ruby-on-rails-3 activerecord rails-migrations

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

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

  1. 为每个wood_stoves,arborist_gear和电锯创建一条记录。
  2. 创建一个迁移,将产品/类别列中每个值的值转换为新创建的类别记录中相应的记录ID整数。
  3. 向category迁移添加一个将category.string列更改为category.integer列的步骤。
  4. 向迁移添加必要的向下步骤以还原所有这些。
  5. 简而言之,我是否应该在迁移中执行所有这些操作以使其可逆,或者我是否应该放弃可逆性并手动对数据库进行更改以避免有些荒谬的迁移,只能转换对应于原始类别?换句话说,迁移将无法逆转属于新创建类别的产品。

1 个答案:

答案 0 :(得分:1)

听起来不错。我唯一不同的是坚持使用Rails约定,将外键列名称以“_id”结尾。生活就这么简单。在您的情况下,从产品型号中删除category列,然后添加category_id列。