Есть ли способ экспортировать объект ActiveRecord в seed.rb? - PullRequest
7 голосов
/ 18 декабря 2010

Можно ли экспортировать данные из базы данных или запустить что-то вроде Person.find (1) .to_seed и скопировать вывод из консоли в файл seed.rb?

Ответы [ 5 ]

5 голосов
/ 07 ноября 2015

Да.

Вот самоцвет - https://github.com/rroblak/seed_dump - именно это и делает.

3 голосов
/ 19 декабря 2010

Попробуйте использовать seed-fu . Вы можете дать SeedFu :: Writer CSV-файл, который будет использоваться для генерации файла в формате seed.rb. Конечно, используя какой-либо инструмент базы данных, вам нужно будет экспортировать таблицу базы данных в файл CSV.

1 голос
/ 21 апреля 2012

Хороший фрагмент кода, который я нашел для решения этой проблемы, - это задание рейка от Джесси Ньюленда:

http://snippets.dzone.com/posts/show/3393

namespace :db do
  namespace :fixtures do
    desc 'Create YAML test fixtures from data in an existing database. Defaults to development database. Set RAILS_ENV to override.'
    task :dump => :environment do
      sql  = "SELECT * FROM %s"
      skip_tables = ["schema_info"]
      ActiveRecord::Base.establish_connection(:development)
      (ActiveRecord::Base.connection.tables - skip_tables).each do |table_name|
        i = "000"
        File.open("test/fixtures/#{table_name}.yml", 'w') do |file|
          data = ActiveRecord::Base.connection.select_all(sql % table_name)
          file.write data.inject({}) { |hash, record|
            hash["#{table_name}_#{i.succ!}"] = record
            hash
          }.to_yaml
        end
      end
    end
  end
end

После того как вы получите свои экспортированные приборы в YAMLможно просто запустить некоторые регулярные выражения, чтобы правильно отформатировать их для файла seed.Это, вероятно, будет хорошим фрагментом кода, который будет использоваться в качестве основы для создания задачи rake для экспорта начального файла.

1 голос
/ 18 декабря 2010

Нет, не совсем. Но вы можете написать код, который мог бы сделать это!

Стратегия будет заключаться в том, чтобы выгрузить записи вашей базы данных в YAML и прочитать этот YAML в seed.rb. Другой стратегией, конечно, является написание кода, который генерирует seed.rb.

Похоже, очень типичная потребность. Я не сталкивался с драгоценным камнем или чем-то, что уже делает это.

0 голосов
/ 15 августа 2017

Откройте консоль Rails и используйте этот трюк:

puts name_of_your_.attributes.to_yaml
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...