簡體   English   中英

與操作員從頭開始進行Rails授權

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM