[英]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
我知道可以多次调用该方法,但是如何传递参数? 变量action
, subject_class
和subject
在哪里启动?
在cancan Wiki中给出的示例中,有以下模型:
class User < ActiveRecord::Base
has_many :permissions
end
class Permissions < ActiveRecord::Base
belongs_to :user
end
action
, subject_class
和subject_id
是permissions
表和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.