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 に答える