[英]Rake task to add default data
我看到一些應用程序包含一些rake任務來加載數據。 我不是在談論種子數據,我知道db / seeds.rb,而是指的是默認用戶和基本記錄等數據,這些數據可以幫助我填寫我的應用程序。 我不想使用db:fixtures:load因為我對此沒有任何控制權...
我想要像這樣的rake任務:
rake myapp:data:delete
rake myapp:data:load
rake myapp:data:reload
'delete'rake任務將刪除我在rake任務中指定的所有數據,'load'應用程序會將任務中的默認數據加載到app中,'reload'任務將刪除所有數據,然后將其加載該應用程序。 我該怎么辦?
如果你能給我一個例子,我有一個名為'Contact'的模型和一些字段 - 基本上如何在rake任務中添加或刪除這些字段中的數據,我真的很感激!
只是為了給你一個想法,當我從一台計算機移動到另一台計算機進行開發時,我主要使用這些rake任務。 我不想手動輸入默認記錄(例如我的用戶登錄)所以我可以做rake myapp:data:reload - 這將是在做rake db:schema:load之后
謝謝,
BN
創建文件lib / tasks / data.rake並編寫以下代碼:
require File.join(File.dirname(__FILE__), '../../config/environment')
require 'database_cleaner'
namespace :myapp do
namespace :data do
task :delete do
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.clean
end
task :load do
require 'db/data.rb'
end
task :reload do
Rake::Task['myapp:data:delete'].invoke
Rake::Task['myapp:data:load'].invoke
end
end
end
所以現在你已經定義了你的rake任務了。 我正在使用gem database_cleaner,所以你需要安裝它:
sudo gem install database_cleaner
現在, rake myapp:data:load
基本上是從一個名為db/data.rb
的文件中加載數據。 只要你在rake任務中使用了文件名,就可以將它命名為你想要的任何東西,或者你可以使用多個文件...所以創建文件db/data.rb
並放入你需要的所有代碼...
User.create(...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.