Rails控制台输出以重新创建对象

时间:2019-01-03 16:07:26

标签: ruby-on-rails console

我不小心从数据库中删除了1000个对象,现在尝试重新创建这些对象。幸运的是,我能够滚动查看控制台输出并找到记录。我复制并粘贴了以下格式的控制台输出:

[#<Assignment id: 276503, school_id: 2091, listing_id: 251572, created_at: "2018-08-30 05:02:36", updated_at: "2018-08-30 05:02:36">, #<Assignment id: 279532, school_id: 1233, listing_id: 252702, created_at: "2018-08-30 06:19:12", updated_at: "2018-08-30 06:19:12">]
#...

我无法通过控制台将输出分配给变量,因此我可以弄清楚如何使用此数据在db中重新创建对象:

irb(main):040:0> a = [#<Assignment id: 276503, school_id: 2091, listing_id: 251572, created_at: "2018-08-30 05:02:36", updated_at: "2018-08-30 05:02:36">, #<Assignment id: 279532, school_id: 1233, listing_id: 252702, created_at: "2018-08-30 06:19:12", updated_at: "2018-08-30 06:19:12">]
irb(main):041:1*

有人知道如何将控制台输出转换为我数据库中的对象吗?

2 个答案:

答案 0 :(得分:1)

如果在控制台中将大型数组分配给变量时遇到问题,则可以尝试使用rake任务。

    array.each do |e|
      options = e.split(',')
      school_id = options.detect{|i| i.match?(/school_id/)}.split(':').last
      listing_id = options.detect{|i| i.match?(/listing_id/)}.split(':').last
      Assignment.create(school_id: school_id, listing_id: listing.id)
    end

这应该有效。这是相当消耗的,但从另一个角度看,又简单又快速。

答案 1 :(得分:0)

我会将该输出粘贴到sublime或任何其他文本编辑器上,然后格式化  成为有用的东西... 一堆inserts使用SQL或只是.create()然后将其粘贴到控制台上