Why is Pundit not coupled with Rolify like CanCanCan is?

前端 未结 2 776
感情败类
感情败类 2021-02-04 13:52

I am using Devise and interested in using Pundit but cannot find much on if it should be integrating with Rolify or if it is stand alone. CanCanCan works nicely with Rolify and

相关标签:
2条回答
  • 2021-02-04 13:58

    I recently used Pundit gem with Rails 4 using devise.Pundit is standalone system with no dependency on Rolify as per my experience.

    Instead of using Rolify, I created migration to add roles in the existing devise user table which helps you to assign roles to users and check which roles they have.

    Please take a look at the schema that I created for my project:

     create_table "users", force: true do |t|
        t.string   "email",                  default: "", null: false
        t.string   "encrypted_password",     default: "", null: false
        t.string   "reset_password_token"
        t.datetime "reset_password_sent_at"
        t.datetime "remember_created_at"
        t.integer  "sign_in_count",          default: 0,  null: false
        t.datetime "current_sign_in_at"
        t.datetime "last_sign_in_at"
        t.string   "current_sign_in_ip"
        t.string   "last_sign_in_ip"
        t.datetime "created_at"
        t.datetime "updated_at"
        **t.boolean  "is_admin"
        t.boolean  "is_daily_user"
    

    Where is_admin and is_daily_user field is added for user roles.

    Hope this helps!

    0 讨论(0)
  • 2021-02-04 13:59

    Why don't use them together? They can be easily used in a fashion like this

    class OrganisationPolicy
      def initialize(user, organisation)
        @user = user
        @organisation = organisation
      end
    
      def index?
        @user.has_role? :admin
      end
    
      def show?
        @user.has_role?(:admin) || @user.organisation == @organisation
      end
    end
    

    In fact, the thing that rolify and pundit are not coupled is something nice, and not a design failure ;)

    0 讨论(0)
提交回复
热议问题