2017-04-05 3 views
1

複数のデータモデルを持つ.ymlファイルをどのようにシードするのか、実際には相互に関連しています。私が持っているものだruby​​ on rails seed .ymlファイルに関連付けられたモデルを持っています

project.rb

class Project < ActiveRecord::Base 
    has_many :todos 
end 

todo.rb

​​

私のデータスキーマ:

create_table "projects", force: :cascade do |t| 
    t.string "title" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

    create_table "todos", force: :cascade do |t| 
    t.string "text" 
    t.boolean "isCompleted" 
    t.integer "project_id" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

seeds.rb(それOFC動作しません)

seed_file = File.join(Rails.root, 'db', 'seeds/seeds.yml') 
config = YAML::load_file(seed_file) 
Project.create(config["projects"]) 

種/ seeds.yml

projects: 
- title: 'family' 
    todos: 
    - text: 'Get some milk' 
     isCompleted: false 
    - text: 'Cook some bacon' 
     isCompleted: true 
    - text: 'Repair the front door' 
     isCompleted: false 
- title: 'work' 
    todos: 
    - text: 'Call my boss' 
     isCompleted: true 
    - text: 'Finish my work tasks' 
     isCompleted: true 
    - text: 'Get fired' 
     isCompleted: false 
- title: 'therest' 
    todos: 
    - text: 'Do something' 
     isCompleted: false 
    - text: 'Ask a question on stackoverflow' 
     isCompleted: false 

は、誰かが、私はそれが正常に動作させるために何をすべき、私にしてください教えてもらえます。私はseeds.ymlのこの種類のデータを正確に使用する必要があります。私はprojectstodosという2つの異なる.ymlファイルを作成して動作させる方法を知っていますが、これは私の問題を解決する方法ではありません。

答えて

0

はあなたが別のフィクスチャファイルにあなたのモデルを分離する必要があるように見え、自分に好意を行いseeds.ymlファイルを削除し、すべての内部seeds.rb

+0

ご希望でしたら、それをしてください! :)しかし、それはどんな意味ですか?私がたくさんの.ymlファイルを持っていれば、これを1つのフォルダに入れるのはどうでしょう?) – NanoBreaker

+1

そういう場合、ymlファイルは意味がありますが、最後には "Model.create"を行うためのハッシュがたくさんあり、それらのハッシュをseeds.rbの中に直接書くことができます。 ところで、テスト用の什器を使用しないで、代わりにFactoryGirlを使用してください。 – aarkerio

0

を作成します。これがために不可欠なビジネス要件がある場合を除き、私はあなたのデータベースをシードする代替ルートをお勧めします

http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures

:それは言うもののYML & seed.rbワークフローを通じて関係を設定するためのいくつかの最小限のサポートをtheresの続く。

  • dbに入力したいデータはありますか?
  • テスト/ dev /または本番データベースにシードすることを目標にしていますか?
+1

これはビジネス上の必要条件ですが、私はすでにすべてのものを動作させるために別の方法を使用したと言いましたが、これを動作させるにはどうすればいいですか? :D答えのおかげでbtw。私の目標は、ファイルをシードして、このファイルの仕組みを知ることです。 – NanoBreaker

+0

そうですね、マルチモデル.ymlのシードファイルはサポートされていないように見えます。必要な静的データをロード&シードするためにrubyを使うことをお勧めします。例。 http://www.xyzpub.com/en/ruby-on-rails/3.2/seed_rb.html - 申し訳ありませんすべて私はビジネスの詳細を理解することなく助けることができます。 - 最高 –

関連する問題