簡體   English   中英

Rake任務添加默認數據

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM