繁体   English   中英

如何限制角色不看到产品价格?

[英]How do I restrict a role from not seeing prices on Products?

我有一个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课程根本不显示价格?

我正在收回我所说的话。 您可以使用CanCan以某种方式执行此操作,但这似乎有些困难。 您可以尝试以下吗?

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

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

<% if can? :view_prices, Product %>
  <%= product.price %>
<% end %>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM