読者です 読者をやめる 読者になる 読者になる

Test用のfixtureを今のdbに戻す

Ruby Rails

ar_fixturesにあるload_from_fileがなんだかうまく動きません。

ruby ./script/runner "User.load_from_file('test/fixtures/users.yml')"

で動くはずなのですが、エラーが出ます。
なので、大幅に書き換えてしまいました。やっつけですけど。
そのパッチ。

--- ar_fixtures.rb      (リビジョン 707)
+++ ar_fixtures.rb      (リビジョン 720)
@@ -24,17 +24,24 @@
       end

       records = YAML::load( File.open( File.expand_path(path, RAILS_ROOT) ) )
-      records.each do |record|
-        record_copy = self.new(record.attributes)
-        record_copy.id = record.id
+      records.each do |key,record|
+=begin
+        record_copy = self.new(record)
+        record_copy["id"] = record["id"]

         # For Single Table Inheritance
-        klass_col = record.class.inheritance_column.to_sym
-        if record[klass_col]
-           record_copy.type = record[klass_col]
+        begin
+          klass_col = record.class.inheritance_column.to_sym
+          if record[klass_col]
+             record_copy.type = record[klass_col]
+          end
+        rescue
         end

-        record_copy.save
+        record_copy.save!
+=end
+        rc=self.new(record)
+        rc.save
       end

       if connection.respond_to?(:reset_pk_sequence!)

これでうまく行きました。

$ ./script/runner "User.load_from_file('test/fixtur
es/users.yml')"

を実行すると見事にデータが戻されているはず。