原本看到一個gem叫rails_db,裡面的功能真是包山包海,也有一鍵輸出,
但沒有辦法做一些調整,只能原封不動地將資料丟出來。只好放棄尋找其他的gem。
最終的解法便是axlsx_rails這個gem(https://github.com/straydogstudio/axlsx_rails)
使用方法:
先在Gemfile中加入
gem 'rubyzip', '~> 1.1.0' gem 'axlsx', '2.1.0.pre' gem 'axlsx_rails'然後bundle install
接著我是創一個download的controller
然後新增一個method叫order(就是想要dump的資料表的名稱)
def order @orders = Order.all render xlsx: 'order', template: "download/order.xlsx.axlsx", filename: "orders.xlsx" end
最後加上template,記得檔名要寫對 order.xlsx.axlsx,然後會dump出一個orders.xlsx
wb = xlsx_package.workbook wb.add_worksheet(name: "Orders") do |sheet| sheet.add_row ["官網訂單編號", "訂購人會員編號","訂購人", "處理進度"] @orders.each do |order| sheet.add_row [order.id, order.user_id, order.p_last_name+order.p_first_name, ''] end end
template的部分就可以整理成想要的格式,最後在route中設定好就可以拉!
如果有接administrate,就可以把download_controller繼承於admin::application_controller這樣他也會吃到authenticate_user 就不怕使用者亂戳不小心就dump下來整個db拉XD