0

我有一个Product模型,如果用户以guest角色身份登录或未登录,我不希望他们能够在我的应用程序中看到产品的价格。

我正在使用 Devise、CanCan 和 Rolify。

我试过这个,在我的ability.rb

user ||= User.new # guest user (not logged in)
if user.has_role? :guest
  can :read, [Product, Vendor, Banner]
  cannot :read, [Product.price]      
end

但这似乎不起作用。我没有在我的视图中添加任何代码 - 我需要这样做吗,还是这个ability类根本不显示价格?

4

1 回答 1

1

我收回我说的话。您可以使用 CanCan 以某种方式做到这一点,但这似乎有点牵强。你可以试试下面的吗?

if user.has_role? :guest
  can :read, [Product, Vendor, Banner]
  cannot :view_prices, Product
end

然后在您看来,您必须手动检查用户是否可以查看价格

<% if can? :view_prices, Product %>
  <%= product.price %>
<% end %>
于 2013-03-14T13:33:49.677 回答