Rails - 将数据库转储到文件中

时间:2016-10-17 20:52:51

标签: ruby-on-rails ruby

我想要做的是将数据库转储到自定义创建的.rb文件中。

我找到了一个seed_dump gem,允许我这样做:

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb

然后我注意到我的数据库是我们的订单,所以我在SO上发现了这个包括ID:

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb EXCLUDE=[]

看起来很好,直到我想将新记录添加到我的数据库。原来,重置主键解决了这个问题:

def reset_pk
    ActiveRecord::Base.connection.tables.each do |t|
      ActiveRecord::Base.connection.reset_pk_sequence!(t)
    end
    redirect_to root_url
end

我现在要做的是简化转储过程,就像现在一样,每次我转储数据库时,记录都“乱序”,我将在下面解释。

我们假设我有两个模型:LabOffer。实验室可以有很多优惠。因此,为了创建Offer对象,我首先必须创建一个Lab对象。但是当我转储模式时,我的文件看起来像这样:

Offer.create...
Offer.create...
Offer.create

Lab.create...
Lab.create...
Lab.create...

如果我尝试播种它,它将不会这样做,因为在实验室之前创建了优惠,它应该是另一种方式。

我的问题是,有没有办法在转储数据库时实际保持关系,以便首先创建实验室?

修改

我设法做了这样的事情:

rails db:seed:dump FILE=db/seeds/my_db_file_name.rb EXCLUDE=[] MODELS="Lab, Offer"

这个保留了我想要的顺序,但我想知道是否有一个简单的方法(如果有15个,20个模型而不是2个)。

1 个答案:

答案 0 :(得分:0)

您可以按照自己的顺序尝试一次转储/恢复一个表。