0

1 つのモデルから誤ってすべてのレコードを消去してしまいました。

Model.destroy_all

出力のために、破棄されたすべてのレコードの大きなリストを受け取りました。

=> [#<Model id: 1, some_attribute: "Hello World">, #<Model id: 2, some_attribute: " Hello World 2">, etc etc etc] 

しかし、私はそれをテキストにしました。IRB を使用して、レコードを返すために何かできることはありますか?

これは非常に緊急です!どんな助けでも大歓迎です。

どうもありがとう

4

2 に答える 2

2

次のスクリプトは、トリックを行う必要があります。

require 'bigdecimal'

str = "#<Model id: 1, some_attribute: #<BigDecimal:4ba0730,'0.0',9(18)>, another_attribute: \"Hello World\">, #<Model id: 2, some_attribute: \" Hello World 2\">"

str.scan(/#?<(\w+) (.+?)>(?=, #|$)/) do |m|
    model = Object.const_get(m[0])
    m[1].gsub!(/#<BigDecimal:.+?('.+?').+?>/, "BigDecimal.new(\\1)")
    eval("model.create(#{m[1]})")
end

これは BigDecimal のインスタンスも処理します。他の特別なタイプを処理する必要がある場合は、別の呼び出しを に追加するだけですgsub!

于 2013-09-27T11:52:48.363 に答える