QA@IT

RailsのModelデータをRuby Codeで出力するツールはありますか?

2970 PV

例えば下記の様なModelとデータがあった場合に、

class User < ActiveRecord::Base
  has_many :blogs
end
class Blog < ActiveRecord::Base
  belongs_to :user
end

#<User id: 1, name: "gian">
#<Blog id: 1, user_id: 1, title: "Hoge">
#<Blog id: 2, user_id: 1, title: "Boe">

以下の様に文字列を出力するツールはありますか?

user = User.create(name: 'gian')
Blog.create(user: user,title: 'Hoge')
Blog.create(user: user,title: 'Boe')

[補足]
具体的な使用例は以下の2つです。

  • irb等で直接実行する
  • seeds.rbに直接記述する

"直接"扱いたいのは、parseやunmarshal処理を作る手間を省きたいからです。

  • YAMLやMarshalではだめなんでしょうか?最終的には何に使いたいんですか?テストとかでしょうか。 -
  • 補足を追記しました。本件の目的は「parseやunmarshalを省きたい」です。 -

回答

seeds.rbで使用したいとのことですので、
stackoverflowのこの質問が近いようですね。

http://stackoverflow.com/questions/4393246/create-seed-file-from-data-already-in-the-database

ただし、acceptされた回答ではなく、他の回答にある
seed_dumpのgem方がイメージにちかいのでしょうか。

http://rubygems.org/gems/seed_dump

利用したことはないのでどの程度再現してくれるのかは不明です。

※ ですのでもっと良い回答が出るかもしれません。
※ seeds.rb内でYAML::loadして回して入れるのも結構みかけました。

編集 履歴 (2)
  • seed_dumpはイメージに近いものでしたが、階層構造には対応していなかったので問題の解決には至りませんでした。
    参考になりました、ありがとうございます!
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。