我有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
课程根本不显示价格?
答案 0 :(得分: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 %>