Как написать политику Pundit с 3 или заявления? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть Политика Pundit , которая работает должным образом, но способ, которым я написал, кажется, не самый лучший способ выразить это.Это политика с тремя утверждениями "или".Вот код:

def update?
  user.admin? or user.moderator? || user.id == @artist.user_id
end

Как еще можно написать это?Или это лучший способ выразить это?

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Кстати, вы могли бы сделать что-то вроде:

delegate *%w(admin? moderator?), to: :user

def user_artist?
  user == @artist.user
end

def update?
  admin? || moderator? || user_artist?
end

Это кажется мне довольно чистым.

0 голосов
/ 15 мая 2018

Два возможных способа: либо

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 модели, но это идея

...