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

时间:2013-03-14 11:01:39

标签: ruby-on-rails ruby-on-rails-3 authorization cancan rolify

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

1 个答案:

答案 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 %>