est ici un test rapide que j'ai fait sur mon modèle:
1. pry(main)> output = JobUser.first(10).to_s
=> "[#<JobUser id: 10001, instagram_user_id: 297705889, job_id: 2, invited: true, created_at: \"2013-09-23 21:53:37\", updated_at: \"2013-09-23 21:53:37\">, #<JobUser id: 10002, instagram_user_id: 36823356, job_id: 2, invited: true, created_at: \"2013-09-23 21:53:37\", updated_at: \"2013-09-23 21:53:37\">, #<JobUser id: 10003, instagram_user_id: 509682835, job_id: 2, invited: true, created_at: \"2013-09-23 21:53:37\", updated_at: \"2013-09-23 21:53:37\"> ....
2.
parsed = output.gsub('#<', '').gsub('>', '').gsub(/^\[/, '').gsub(/\]$/, '').split('JobUser').map(&:strip)
=>
"id: 10001, instagram_user_id: 297705889, job_id: 2, invited: true, created_at: \"2013-09-23 21:53:37\", updated_at: \"2013-09-23 21:53:37\",",
"id: 10002, instagram_user_id: 36823356, job_id: 2, invited: true, created_at: \"2013-09-23 21:53:37\", updated_at: \"2013-09-23 21:53:37\",",
"id: 10003, instagram_user_id: 509682835, job_id: 2, invited: true, created_at: \"2013-09-23 21:53:37\", updated_at: \"2013-09-23 21:53:37\"...
3. parsed.shift
parce que le premier élément de tableau sera une chaîne vide
4. records = parsed.map { |serialized_record| JobUser.new(eval "{ #{serialized_record} }") }
alors vous devriez probablement exécuter quelque chose comme records.each { |record| record.save }
S'il vous plaît noter que vous devrait remplacer JobUser
avec le nom de votre modèle. Le point est que vous devrez analyser la chaîne et l'insérer dans la base de données
bonne chance!
Merci pour votre réponse! Comment puis-je améliorer mon deuxième groupe de capture si j'ai un "#
Dmitri
Merci! Cela fait très bien l'affaire! À votre santé! :) – Dmitri
Attention avec les guillemets doubles, j'ai eu un problème en incluant des dates dans le mien, datetime avait des guillemets en eux, mais en faisant 'str = 'blah'' il a semblé fonctionner –