2017-04-05 113 views
1

我真的不知道如何爲其中有多個數據模型的.yml文件播種,再加上它們是相互關聯的。ruby​​ on rails種子.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製作兩個不同的.yml文件並使它們正常工作,但這不是我想要解決問題的方式。

回答

0

幫自己一個忙,刪除seeds.yml文件,並創建所有內部seeds.rb

+0

如你所願,做到了! :)但它有任何意義?如果我有很多.yml文件,如果將它們全部放在一個文件夾中,這會不會更好?)只是看起來更好。 – NanoBreaker

+1

是的,在這種情況下,yml文件是有意義的,但最後你會有很多哈希來做「Model.create」的東西,你可以直接在seeds.rb中寫這些哈希。 順便說一句,不要使用燈具進行測試,而應使用FactoryGirl。 – aarkerio

0

它看起來像你需要你的模型分解爲單獨的夾具文件。雖然說,那裏有對通過YML & seed.rb工作流程設置關係一些最起碼的支持:

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

我建議替代路線種子數據庫,除非這是一個業務需求至關重要跟隨。可以幫助更多,如果你回答:

  • 你已經有你想提供給數據庫的數據?
  • 您的目標是建立測試/開發/生產數據庫嗎?
+1

這是一個業務需求,正如我所說我已經用另一種方式使所有的工作,但如何使這一個工作? :D感謝您的答案btw。我的目標只是將該文件播種,以瞭解它是如何工作的。 – NanoBreaker

+0

是啊,所以多模型.yml種子文件看起來不像他們支持..我建議你只是使用紅寶石來加載和種子你需要的靜態數據。恩。 http://www.xyzpub.com/en/ruby-on-rails/3.2/seed_rb.html - 對不起,這是我可以幫助,而不理解更多的商業需求。 - 最好 –