Tôi đang sử dụng Devise và quan tâm đến việc sử dụng Pundit nhưng không thể tìm thấy nhiều nếu nó nên được tích hợp với Rolify hoặc nếu nó đứng một mình. CanCanCan hoạt động độc đáo với Rolify và tôi thích mô hình vai trò. Tôi có thiếu một lý do chính tại sao Pundit và Rolify dường như không được sử dụng với nhau rất nhiều?Tại sao Pundit không kết hợp với Rolify như CanCanCan là?
Trả lời
Tại sao không sử dụng chúng cùng nhau? Họ có thể dễ dàng sử dụng trong một thời trang như thế này
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
Trong thực tế, điều mà rolify
và pundit
không cùng là một cái gì đó tốt đẹp, và không phải là một thất bại thiết kế;)
Gần đây tôi đã sử dụng đá quý Pundit với Rails 4 bằng cách sử dụng devise.Pundit là hệ thống độc lập không phụ thuộc vào Rolify theo kinh nghiệm của tôi.
Thay vì sử dụng Rolify, tôi đã tạo di chuyển để thêm vai trò trong bảng người dùng hiện có, giúp bạn gán vai trò cho người dùng và kiểm tra vai trò của họ.
Xin hãy nhìn vào sơ đồ mà tôi đã tạo cho dự án của tôi:
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"
đâu is_admin
và is_daily_user
lĩnh vực đang gia tăng đối với vai trò người dùng.
Hy vọng điều này sẽ hữu ích!
Điều này sẽ hoạt động nhưng không thể mở rộng. Hãy tưởng tượng bạn muốn thêm một người dùng is_premium. Bạn sẽ phải thay đổi mô hình DB của bạn. Tạo thay vì mô hình của riêng bạn UserRole (: id,: role_name) thuộc về người dùng nơi bạn có thể tạo bao nhiêu tên vai trò theo ý bạn cho mỗi người dùng ... Tôi đã đi với đá quý Rolify, mặc dù;) – luigi7up
- 1. Giá trị hiện tại của Ruby on Rails Pundit là 0 trong thử nghiệm tích hợp
- 2. Tại sao kết hợp Maven với Git?
- 3. Tại sao tôi nên kết hợp Math.floor với Math.random?
- 4. Tại sao trục xoay với cột "phụ" không kết hợp các kết quả
- 5. Tại sao kết hợp 3 chiều thuận lợi hơn so với kết hợp 2 chiều?
- 6. Tại sao scalatest kết hợp đầu ra?
- 7. Tại sao không phải là andalso/2 được triển khai như một BIF phù hợp?
- 8. Tại sao LINQ không kết hợp câu lệnh này?
- 9. Tại sao biểu thức kết hợp chuỗi không biên dịch?
- 10. bảng Rolify không nhận được tạo ra
- 11. Cấp phép một mảng ID với đá quý Pundit
- 12. Tại sao Perl không phù hợp với làm tròn sprintf?
- 13. Tại sao là Array.slice như vậy (shockingly!) Chậm?
- 14. Tại sao các nút gốc của tôi kết thúc với chính chúng như là parent_id với actions_as_tree?
- 15. Tại sao Spark không cho phép kết hợp phía bản đồ với các khóa mảng?
- 16. Tại sao bên ngoài không liên kết với biến tĩnh?
- 17. Tại sao Cache.asMap() không phù hợp với Cache.size()?
- 18. Tại sao loại này không phù hợp?
- 19. Tại sao xdebug không thiết lập kết nối với NetBeans?
- 20. Tại sao Python không hợp nhất?
- 21. Tại sao: = được phép làm toán tử kết hợp?
- 22. Tại sao MSpec không tích hợp với ReSharper 6?
- 23. Tại sao enums được coi là loại hợp chất?
- 24. Tại sao chức năng kết hợp R lại quá chậm?
- 25. Tại sao `to.` là tên miền hợp lệ?
- 26. Tại sao bạn kết hợp $ _GET và $ _POST trong PHP?
- 27. (Tại sao) MySQL không thể sử dụng chỉ mục trong các trường hợp như vậy?
- 28. Tại sao MouseAdapter lại là bộ điều hợp?
- 29. Tại sao khái niệm Marshalling được gọi là như vậy?
- 30. Tại sao NSDictionary là không?
Pundit sẽ chỉ làm việc tốt với Rolify hoặc bất kỳ hệ thống vai trò nào khác. – sevenseacat
@sevenseacat đây cũng là câu trả lời đúng – MicFin