Я использую Rails 3.0.3 и имею данные для таблицы "категории" уже в базе данных, но хочу создать из нее семенный файл. Есть ли какая-либо задача rake, которая будет генерировать для меня формат seeds.rb из этой таблицы?
Создавать файл семян из данных уже в базе данных
Ответ 1
Существует жемчужина под названием seed_dump
, которая будет делать именно то, что вы хотите:
Ответ 2
Не уверен в каких-либо существующих задачах rake, но вы можете попробовать запустить что-то вроде этого в консоли rails и вставить результаты в файл seeds.rb
( предупреждение: грязно и непроверено)
c = Category.all
c.each do |cat|
puts "Category.create(:name => '#{cat.name}')"
end
Отрегулируйте любые дополнительные поля, которые у вас могут быть.
Надеюсь, что это поможет.
Ответ 3
Я использовал YamlDb для вывода данных из моей разработки db, а затем загрузил их на другой сервер. Он выгружает данные в файл Yaml, который будет использоваться в любое время, когда вы хотите использовать db: load, чтобы направить его на любой другой сервер db.
Ответ 4
Старый вопрос, у меня есть новый, основанный на ответе @Brian.
Если вы хотите сохранить всю строку следующим образом:
seedfile = File.open('db/seeds.rb', 'a')
c = Category.all
c.each do |cat|
seedfile.write "Category.create(#{cat.attributes})\n"
end
seedfile.close
Если вы хотите только написать некоторые атрибуты, измените строку записи на следующее:
seedfile.write "Category.create(#{cat.attributes.slice('attr1', 'attr2', ...})\n"
Или, если вы хотите, чтобы все атрибуты, кроме некоторых, например, отметки времени:
seedfile.write "Category.create(#{cat.attributes.except('created_at', 'updated_at')})\n"