我想要做的是将数据库转储到自定义创建的.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
我现在要做的是简化转储过程,就像现在一样,每次我转储数据库时,记录都“乱序”,我将在下面解释。
我们假设我有两个模型:Lab
和Offer
。实验室可以有很多优惠。因此,为了创建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个)。
答案 0 :(得分:0)
您可以按照自己的顺序尝试一次转储/恢复一个表。