我将我的数据库中的关系从has_many更改为has_many:through。所以现在我有:通过db:migrate更改结构数据库后,Rails如何执行数据更新?
class Brand < Ar::Base
has_many :products
end
class Product < AR::Base
belongs_to :brand
end
我打算添加一个连接表。
但是当然我需要用数据更新数据库。我已经看到,在迁移的范围内这样做并不是一个好习惯。在数据更新完成后(即从产品表中删除原始brand_id列),我知道必须在数据更新完成后再运行另一次迁移,这是执行此操作的最佳位置?
看起来他想运行迁移(添加连接表),然后操作表中的数据,然后再运行另一个迁移。种子是为了传播最初的数据而添加的,但这不是他想要达到的目标......他想操纵现有的数据。有些人认为你不应该用迁移来操纵表中的数据,只能使用表本身。 – johnmcaliley 2010-12-04 20:56:50
我会争辩说,这样做的正确位置应该在一次迁移中。运行与首次迁移相关的更改,迁移数据,然后运行其余的更改。如果这三个步骤相互联系,那么任何一个都不应该独立发生,它们应该包含在一个迁移中。 – 2010-12-04 21:09:22