检查 Ruby 中是否有多个条件为真

Check if any of multiple conditions are true in Ruby

我有以下 Ruby 条件:

<% if can? :read, %w(policy journey crash user).map(&:to_sym) %>

我想翻译成:如果用户对数组中的任何资源具有读取权限。

然而它总是 returns 错误。我该如何解决?

我不想做:

if can? :read, :policy || can? :read, :journey || etc...

当然可以。

Enumerable#any? 正是您要找的:

<% if %i(policy journey crash user).any? { |action| can? :read, action } %>

以上将 return true 只有 can read any action.

请注意,我使用 %i 而不是 %w。它为您提供符号数组。