簡體   English   中英

在Ruby中調用的方法

[英]Methods calling in Ruby

我在CanCan gem for rails中找到了以下代碼:

def initialize(user)
    can do |action, subject_class, subject|
      user.permissions.find_all_by_action(aliases_for_action(action)).any? do |permission|
        permission.subject_class == subject_class.to_s &&
          (subject.nil? || permission.subject_id.nil? || permission.subject_id == subject.id)
      end
    end
  end

我知道可以多次調用該方法,但是如何傳遞參數? 變量actionsubject_classsubject在哪里啟動?

在cancan Wiki中給出的示例中,有以下模型:

class User < ActiveRecord::Base
  has_many :permissions
end

class Permissions < ActiveRecord::Base
  belongs_to :user
end

actionsubject_classsubject_idpermissions表和permission模型上數據庫中的列, ActiveRecord針對該列自動生成模型對象上的方法。 例如

@permission = Permission.new
@permission.action = :new
@permission.subject_class = :ApplicationController
@permission.save

這會將這些數據保存在權限表中

進一步,

  • action =特定的操作,例如索引,編輯,刪除等。
  • subject_class =是像ApplicationController這樣的控制器的名稱
  • subject_id =可選

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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