我有一个简单的Rails 4应用程序,只有两个空模型,用户和作业。在严格的模式下,我使用Rolify宝石来赋予用户角色。
即(文档的严格模式)
class User < ActiveRecord::Base
rolify strict: true
end本质上,我希望具有角色工程师的用户能够对作业类拥有特定的权限,但不一定对特定的职务具有权限。
因此,我为user1提供了一个用于作业类和作业类实例的engineer角色。而user2只获得职务类的工程师角色。就像文件一样。
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调用时
(即每个文档的类级别)
User.with_role(:engineer, job)
# => [ list of User instances that have a scoped role of "engineer" to a job instance ]它返回、、user1和user2。当我只期望user1的时候,因为它是专门与那个实例相关联的。严格的模式不是那样起作用的还是我做错了什么?
发布于 2015-10-14 03:35:51
我认为这是一个bug,所以我在这里提交了一个问题:https://github.com/RolifyCommunity/rolify/issues/362
要继续您的生活,您可以对返回的每个用户进行has_role?二次检查。
User.with_role(:engineer, job).select{|user| user.has_role?(:engineer, job)}
https://stackoverflow.com/questions/32569395
复制相似问题