2014-10-03 39 views
8

Devise kullanıyorum ve Pundit kullanarak ilgileniyorum, ancak Rolify ile entegre olmasının gerekip gerekmediği veya tek başına ise fazla bir şey bulamıyorum. CanCanCan, Rolify ile güzel çalışır ve rol modelini severim. Pundit ve Rolify'ın neden çok fazla kullanılmadığı konusunda önemli bir neden eksik miyim?Pundit neden CanCanCan gibi Rolify ile eşleşmiyor?

+6

Pundit Rolify ile sadece iyi çalışır); Kolayca Aslında bu

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 

gibi bir moda kullanılabilir rolify ve pundit birleştiğinde olmadığını şey şey güzel değil, bir tasarım hatasıdır veya başka herhangi bir rol sistemi. – sevenseacat

+1

@sevenseacat Bu ayrıca doğru bir cevap – MicFin

cevap

35

Neden bunları birlikte kullanmıyoruz?

1

Son zamanlarda Predit gemini Rails 4 ile birlikte kullanıyorum.Pundit, deneyimime göre Rolify'a bağımlı olmayan bağımsız bir sistemdir.

Rolify kullanmak yerine, kullanıcılara rol atamanıza ve sahip olduğunuz rolleri kontrol etmenize yardımcı olan mevcut plan kullanıcı tablosuna rol eklemek için geçiş oluşturdum.

Projem için oluşturulan şema bakmak edin: is_admin ve is_daily_user alan kullanıcı rolleri için eklenir

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" 

.

Bu yardımcı olur umarız!

+2

Bu işe yarayacak, ancak ölçeklenebilir değil. Bir is_premium kullanıcısı eklemek istediğinizi düşünün. DB modelinizi değiştirmek zorunda kalacaksınız. Bunun yerine kendi modeliniz olan UserRole (: id,: role_name), kullanıcı için istediğiniz sayıda rol ismi oluşturabileceğiniz kullanıcıya ait olan (...) Rolify gem ile birlikte gittim;) – luigi7up