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

迁移中的Rails预填充表

  •  4
  • GSto  · 技术社区  · 14 年前

    在Rails 3.x中有没有一种方法可以预先填充带有迁移的数据库表?我有一个状态列表,我希望在建立项目的构建时能够预先填充它。

    2 回复  |  直到 14 年前
        1
  •  7
  •   johnmcaliley    14 年前
        2
  •  5
  •   rwilliams    14 年前

    是的。创建表后,可以调用状态模型并开始填充表。

    class LoadStates < ActiveRecord::Migration
      def self.up
        states = ['state1','state2','state2']
        for state in states
            State.create(:name=>state)
        end
      end
    
      def self.down
        State.delete_all
      end
    end
    

    如果你想变得更花哨我会用 activerecord-import 宝石做批量插入。如果要导入成百上千条记录,这也是一种很好的方法。

      def self.up
        states = ['state1','state2','state2']
        states_for_import = []
        for state in states
            states_for_import << State.new(:name=>state)
        end
        State.import states_for_import
      end