检查Ruby

时间:2017-03-07 18:20:38

标签: ruby cancan cancancan

我有以下Ruby条件:

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

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

然而它总是返回false。我该如何解决?

我不想这样做:

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

1 个答案:

答案 0 :(得分:3)

当然可以。

Enumerable#any?正是您所寻找的:

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

只有在true

时,上述内容才会返回can read any action

注意,我使用%i代替%w。它为您提供符号数组。