如何使用&&amp ;;工作正常吗?

时间:2014-11-03 14:10:02

标签: ruby-on-rails ruby ruby-on-rails-4 devise cancancan

我认为这是:

<% if user_signed_in? && current_user.has_role? :admin or :editor %>

返回此错误:

syntax error, unexpected tSYMBEG, expecting keyword_then or ';' or '\n'

我也试过这个:

<% if user_signed_in? and current_user.has_role? :admin or :editor %>

虽然我没有得到上述错误,但它根本不起作用......即。 non-signed-in-user可以访问if块中的内容。

3 个答案:

答案 0 :(得分:1)

我不认为has_role?可以使用多个参数。正确的方法是:

<% if user_signed_in? && (current_user.has_role? :admin or current_user.has_role? :editor) %>

答案 1 :(得分:1)

我找到了更加惯用的写法,即使用[has_any_role?][1]

    <% if user_signed_in? and current_user.has_any_role? :admin, :editor %>

答案 2 :(得分:0)

你可以这样试试:

<% if user_signed_in? && [:admin, :editor].include?(current_user.role) %>