我有以下哈希:
MAPPING = {
create: [:admin],
update: [:admin],
delete: [:admin],
index: [:all]
}
我需要在策略类中动态创建pundit方法。 我需要搜索映射哈希所有具有管理角色的项目并创建策略方法:
def create?
true
end
def update?
true
end
这样我就不必一直重复这段代码。 我怎样才能做到这一点 ? 感谢。
答案 0 :(得分:0)
下面的代码为每个键包含:admin
的值定义了一种方法。方法的名称是键,强制转换为字符串,并附加问号。每个定义的方法都返回true
。
MAPPING.each do |action, roles|
define_method("#{action}?") do
true
end if roles.include?(:admin)
end
答案 1 :(得分:0)
这是我正在使用的代码:
class CarPolicy < ApplicationPolicy
attr_reader :user, :record
def initialize(user, record)
@user = user
@record = record
end
PERMISSION_KEY_MAPPING = {
index: [:admin]
}
PERMISSION_KEY_MAPPING.each do |action, roles|
define_method("#{action}?") do
true
end if user.roles.include?(:admin)
end
end
该行:
end if users.roles.include?(:admin)
不起作用,因为我无法访问user.roles。