我有Pundit policy正常工作,但我写它的方式似乎并不是表达这种方式的“最佳”方式。这是一个包含三个“或”语句的政策。这是代码:
def update?
user.admin? or user.moderator? || user.id == @artist.user_id
end
我能写这个的另一种方式是什么?或者这是表达这个的最佳方式吗?
答案 0 :(得分:2)
delegate *%w(admin? moderator?), to: :user
def user_artist?
user == @artist.user
end
def update?
admin? || moderator? || user_artist?
end
这对我来说似乎很干净。
答案 1 :(得分:1)
两种可能的方式:
def update?
user.admin_or_moderator? || user == @artist.user
end
admin_or_moderator?
只是说,它甚至可能类似于privileged?
,并在您的User
模型中实施此方法。或
def update?
%i(admin moderator).include?(user.role) || user == @artist.user
end
我猜你在User
模型中有类似角色的东西但是这个想法