【发布时间】:2015-12-10 17:25:22
【问题描述】:
我有一个简单的 Rails 4 应用程序,只有两个空模型,用户和作业。我在严格模式下使用 Rolify gem 来赋予用户角色。
即(根据documentation 的严格模式)
class User < ActiveRecord::Base
rolify strict: true
end
本质上,我希望具有角色 engineer 的用户能够拥有 Job 类的某些权限,但不一定具有特定 Job 的权限。
所以我为 user1 赋予了 Job 类和 Job 类实例的 engineer 角色。而 user2 仅获得 Job 类的 engineer 角色。就像文档一样。
job = Job.create() # Job class instance
user1.add_role(:engineer, Job) # Job class
user1.add_role(:engineer, job) # Job class instance
user2.add_role(:engineer, Job) # Job class
效果很好,我可以这样说;
user1.has_role? :engineer, Job #=> true
user1.has_role? :engineer, job #=> true
user2.has_role? :engineer, Job #=> true
user2.has_role? :engineer, job #=> false This is the result I expect.
但是当我尝试进行类级别的 rolify 调用时
(即documentation 的类级别)
User.with_role(:engineer, job)
# => [ list of User instances that have a scoped role of "engineer" to a job instance ]
它返回 user1 和 user2。当我只期望 user1 因为它专门与该实例相关联时。严格模式不是这样工作还是我做错了什么?
【问题讨论】:
-
这里也一样。对我来说似乎是一个合法的错误。
标签: ruby-on-rails ruby rolify