Rolify Gem with Cancancan and Devise
Vấn đề phân quyền trong các ứng dụng vẫn luôn là một vấn đề nhức đầu với tất cả những nhà phát triển Như mọi người đã biết Cancancan là một trong những gem phổ biến nhất để phân quyền. Và Rolify là một gem hỗ trợ rất nhiều cho Cancancan trong sự phân quyền đó. Cài đặt gem "rolify" gem ...
Vấn đề phân quyền trong các ứng dụng vẫn luôn là một vấn đề nhức đầu với tất cả những nhà phát triển Như mọi người đã biết Cancancan là một trong những gem phổ biến nhất để phân quyền. Và Rolify là một gem hỗ trợ rất nhiều cho Cancancan trong sự phân quyền đó.
- Cài đặt
gem "rolify" gem "devise" gem "cancan"
Sau khi insert gem và chạy bundle install cần cài đặt Devise bằng câu lệnh rails generate devise:install và rails generate devise User.
Tiếp theo là cài đặt role cho user bằng lệnh rails generate rolify Role User
Sau khi chạy, ứng dụng của bạn sẽ sinh ra
invoke active_record create app/models/role.rb invoke test_unit create test/models/role_test.rb create test/fixtures/roles.yml insert app/models/role.rb create db/migrate/20160507180239_rolify_create_roles.rb insert app/models/user.rb create config/initializers/rolify.rb
Tiếp sau đó cần cài đặt Cancancan bằng câu lệnh
rails generate cancan:ability
Cuối cùng là migrate rake db:migrate
- Cách sử dụng
Lúc này, bạn có thể tạo roles và assign cho chúng sử dụng rolify gem. Bạn có thể sử dụng các role như sau:
user = User.find(1) # Để thêm 1 quyền cho user user.add_role :admin # Để check 1 user có quyền không user.has_role? :admin # Để xóa quyền user.remove_role :admin
Nếu có lỗi khi add 1 role cho user thì hãy xóa optional: true trong model role.rb
Trong ability.rb bạn có thể sử dụng như sau:
if user.has_role? :admin can :manage, :all else can :read, :all end
Mong rằng bài viết nho nhỏ này có thể giúp bạn sử dụng Cancancan nhanh hơn trong quá trình kiểm tra quyền của ứng dụng!
Cảm ơn đã dành thời gian cho bài viết của mình