2015-09-14 17 views
1

我有一個簡單的Rails 4應用程序,只有兩個空的模型User和Job。我在嚴格模式下使用Rolify gem來給用戶角色。Rolify Gem嚴格模式/作用域角色

即(佔documentation嚴格模式)

class User < ActiveRecord::Base 
    rolify strict: true 
end 

基本上我想與角色工程師用戶能夠擁有的作業類一定的權限,但對於具體的工作並不一定權限。

所以我給用戶1作爲工程師作爲Job類和Job類的一個實例。而用戶2僅獲得Job類工程師的角色。就像文檔一樣。

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,因爲它是特別綁定到該實例。嚴格模式不是這樣工作還是我做錯了什麼?

+0

同樣在這裏。似乎對我來說是一個合法的錯誤。 –

回答

0

,我認爲這是一個錯誤,所以我在這裏提交的問題:https://github.com/RolifyCommunity/rolify/issues/362

繼續你的生活繼續,你可以這樣做對各用戶的has_role?仔細檢查返回。

User.with_role(:engineer, job).select{|user| user.has_role?(:engineer, job)}

+0

感謝您的回答,這將現在工作。我會密切關注github問題頁面。我想這可能是被接受的答案,直到所謂的錯誤得到解決。再次感謝。 –