Xây dựng ứng dụng cho Admin với Gem "Rails Admin" kết hợp gem Devise

1. Giới thiệu

Để xây dựng phần ứng dụng quản lý cho Admin không phải là một điều đơn giản và có thể mất rất nhiều thời gian của các lập trình viên. Tuy nhiên với gem Rails Admin, nó sẻ giúp cho các lập trình viên RoR có thể xây dựng được ứng dụng Admin chỉ thông qua vài bước. Bài viết lần này mình xin giới thiệu cách cài đặt gem Rails Admin lên dự án của mình.

2.Cài đặt Rails Admin

Thêm vào gemfile:

    gem "rails_admin", "~> 1.2"

Sau đó chạy lệnh bundle install và tiếp tục lệnh sau để cài đặt:

	rails g rails_admin:install

Kiểm tra file router.rb nếu chưa có thì thêm dòng code sau vào

  mount RailsAdmin::Engine => "/admin", as: :rails_admin

Bây giờ bạn có thể vào url http://<domain của bạn>/admin để xem kết quả. Với mỗi model trong dự án của bạn gem sẽ sinh ra 1 trang quản lý bao gồm các chức năng Create, Update, Delete, Filter, Search... Để tạo phần đăng nhập cho trang quản lý admin trong bài viết lần này mình xin hướng dẫn cách kết hợp gem devise vào

3. Cài đặt Devise

  1. Tạo 1 bảng admin và model admin (chứa các tài khoản có thể đăng nhập vào trang quản lý dành cho admin) ví dụ mình tạo bảng và model Admin với 1 trường trường email(trường password sẻ được sinh ra khi add devise cho model)
    rails generate model Admin email:string

chạy rails db:migrate để tạo bảng Admin 2. Thêm gem devise vào gemfile

	gem "devise"

chạy bundle install để cài đặt devise 3. Thêm gem divise và thêm divise cho model Admin

	rails generate devise Admin

Kiểm tra file router.rb nếu chưa có thì thêm dòng code sau

	devise_for :admins

Các bạn có thể config thêm cho gem divise ở các bài viết khác tại viblo. 4. Config gem rails_admin: Thêm đoạn mã sau vào file /config/initializers/rails_admin.rb

   	RailsAdmin.config do |config|
      config.authenticate_with do
        warden.authenticate! scope: :admin
      end
      config.current_user_method(&:current_admin)
    end

Xong bây giờ bạn restart server và vào đường dẫn http://<url của bạn>/admin bạn sẻ thấy trang yêu cầu đăng nhập trước khi có thể sử dụng các chưng năng trong trang quản lý cho admin (thêm admin mới vào bảng admin nếu chưa có) Bài viết còn nhiều thiếu sót mong nhận được sự góp ý của tất cả mọi người.

Tài liệu tham khảo https://github.com/sferik/rails_admin https://github.com/plataformatec/devise và một vài nguồn khác...