代码之家  ›  专栏  ›  技术社区  ›  vulcan_hacker

轨道迁移问题

  •  2
  • vulcan_hacker  · 技术社区  · 16 年前

    我的Rails应用程序中有4个相关迁移:

    前3个迁移分别在self.up和self.down方法中创建一个表,并将它们放到各自的self.down方法中。

    第四次迁移运行一个rake任务,将数据加载到所有三个(self.up)中。我在想应该把self.down放在这个迁移中删除3个表中的行吗?

    我做错了吗?可能应该创建一个迁移,在这里我创建3个表并以self.up的方式加载数据,然后在self.down方法中删除所有三个表?

    2 回复  |  直到 16 年前
        1
  •  5
  •   Ariejan    16 年前

    这是错的!

    迁移只能用于迁移数据 模型 不是你 数据 .

    Rails 2.3.4添加了“seeds”。这是db/seeds.rb中的一个文件,包含“bootstrap”数据库的Ruby代码。这是为数据库创建半静态内容(如类别、查找表或用户帐户)的好方法。

    然后您可以用一个简单的rake任务加载种子数据。

    rake db:seed
    
        2
  •  3
  •   John Topley    16 年前

    做这件事没有真正的正确或错误的方法。根据您所做的,第四次迁移应该只在其down方法中卸载数据。每个向下只应撤消向上的操作。

    在创建表的迁移中加载数据当然不是必需的。如果您有3个创建的表具有多个或属于关系,那么将数据放入单独的迁移中是有意义的,这样您就可以创建关系,然后在数据加载中使用它们。

    除此之外,如果您有一个rake任务来加载数据,为什么还要为运行该rake任务的迁移而烦恼呢?只需将运行rake任务作为安装的一部分,或者使用rake任务加载或卸载一些演示数据。

    通常,我将迁移模式放在重点位置,并将任何数据加载放在我独立调用的rake任务中。