如何製作 Custom seeds file
若需要經常透過rake db:seed
去更新資料時,可以改用客製化的db:seed:*
去執行,且在執行時帶入參數,就可以順利完成資料新增。
客製化 seeds 步驟
首先要先在 lib/tasks/
下新增 custom_seed.rake
這個檔案,詳細新增內容如下
1 | # lib/tasks/custom_seed.rake |
建立檔案路徑檔案
要透過rake db:seed:one_categories:add_sub_category
的方式,來新增一筆資料到關聯資料表one_sub_categories
內
其主要資料表與關聯資料表的關係如下:1
2
3
4
5
6
7class OneCategory
has_many :one_sub_categories
end
class OneSubCategory
belongs_to :one_category
end
接著在db/seeds/one_categories
下建立add_sub_category.rb
,
程式碼內容如下:
1 | # db/seeds/one_categories/add_sub_category.rb |
簡單說明程式流程,主要透過 ENV["cate_name"]
與 ENV["major_id"]
取得從 cmd 所傳入的參數,
接著透過OneCategory
尋找major_id
是否存在在主要資料內,再透過try(:one_sub_categories)
去找尋關聯資料,
並透過try(:find_or_create_by!, name: cate_name, enable: 0)
建立資料
執行方式
透過 shell cmd 執行以下程式,執行新增的 db:seed:*
方法,並傳入所需要的參數
1 | RAILS_ENV=production bundle exec rake db:seed:one_categories:add_sub_category cate_name="次要資料" major_id="57"` |