[英]Rails authorization from scratch with operators
因此,我根據Ryan Bates的railscast從頭開始進行授權。
我認為我要面對的問題是這部分代碼
action == 'create' || action == 'update'
我想說的是,如果操作是create
或action是update
(所以它們都是其中一個)和obj.has_accepted_acceptance?
它應該返回false,但是除非消除|| action == 'update'
否則它返回true。 || action == 'update'
部分代碼。 只有這樣,它才能按預期工作。
運營商有問題嗎? 預先感謝您的寶貴時間!
class Permission < Struct.new(:user)
def allow?(controller, action, obj = nil)
if controller == "acceptances"
if action == 'create' || action == 'update' && obj.has_accepted_acceptance?
return false
end
end
return true
end
end
嘗試對您的條件進行分組:
if (action == 'create' || action == 'update') && obj.has_accepted_acceptance?
您可以使用ActiveSupport .in?
將第一個從兩個子句轉換為一個:
if action.in?(%w[create update]) && obj.has_accepted_acceptance?
在普通的舊紅寶石中,相同的是:
if %w[create update].includes?(action) && obj.has_accepted_acceptance?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.