開発用のsqlite3データベースをテストデータベースにエクスポートしようとしています。これを行うために、私は最初に自分のモデルをレールコンソールにエクスポートし、それをファイルに保存しました。rspec(レールプロジェクト)にto_yamlファイルが正しくロードされていません
> MyModel.all.to_yaml # this was saved to mymodels.yml
私はrspecを実行すると、mymodels.ymlを解析しようとして失敗します。私が得るエラーは:
Failure/Error: Unable to find matching line from backtrace a YAML error occurred parsing /Users/MakeM/MyProject1/spec/fixtures/mymodels.yml.
Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html The exact error was: NoMethodError: undefined method `keys' for nil:NilClass
なぜこのエラーが発生しているのですか?私が言及しなければならないことの1つは、to_yamlによって出力されるyamlが少し奇妙に見えるということです。ここではその一部です:
---
- !ruby/object:MyModel
attributes:
id: 133
book: FirstBook
chapters: 50
created_at: 2010-10-06 05:03:15.709931
updated_at: 2010-10-06 05:03:15.709931
abbr: FB
attributes_cache: {}
changed_attributes: {}
destroyed: false
marked_for_destruction: false
new_record: false
previously_changed: {}
readonly: false
ありがとうございます! .map(&:attributes)は正確に何をしますか?私はグーグルを試みたが、私が理解するのを助けるために何かを考え出すことはなかった。 – MakeM
これはどちらもうまくいかないようです。私は同じ "失敗/エラー:バックトレースから一致する行を見つけることができません のための不正なデータ..."エラーが発生します。 yamlはそれがどのように見えるべきかにはるかに近く見えますが。 – MakeM
map(&:attributes)すべての属性メソッドを呼び出すと、結果の配列を生成します。 – shingara