问题
I have the following Ruby conditional:
<% if can? :read, %w(policy journey crash user).map(&:to_sym) %>
Which I want to translate to: if the user has read permissions for any of the resources in the array.
However it always returns false. How can I fix it?
I don't want to do:
if can? :read, :policy || can? :read, :journey || etc...
回答1:
Sure you can.
Enumerable#any? is exactly what you're looking for:
<% if %i(policy journey crash user).any? { |action| can? :read, action } %>
The above will return true
only if can read any action
.
Note, I used %i
instead of %w
. It gives you array of symbols.
来源:https://stackoverflow.com/questions/42655504/check-if-any-of-multiple-conditions-are-true-in-ruby