如何製作 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"` |