0

나는 Product 모델을 가지고 있으며 사용자가 guest 역할로 로그인하거나 로그인하지 않은 경우 사용자가 내 앱의 가격을 볼 수 없도록하고 싶습니다.제품의 가격이 표시되지 않도록 역할을 제한하려면 어떻게합니까?

저는 Devise, CanCan 및 Rolify를 사용하고 있습니다.

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

을하지만 그것은 작동하지 않습니다

나는 나의 ability.rb에서,이 시도. 내 견해에 어떤 ​​코드도 추가하지 않았습니다 -해야합니까, 아니면이 ability 클래스가 가격을 전혀 표시하지 않아야합니까?

+0

당신이 그래서 내가 그것을 어떻게 캉캉을 할 수 – jvnill

+0

사용하여이 할 수없는 볼 수 있는지 수동으로 확인해야? – marcamillion

답변

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 %> 
+0

이상하게도이 오류가 발생합니다. 'NoMethodError at/ # 의'price '에 대한 정의되지 않은 메서드는':'Product.price'를 읽을 수 없습니다. – marcamillion

+0

아 죄송합니다. 귀하의 코드를 복사했지만 그 행을 삭제하는 것을 잊었습니다. 내 대답 – jvnill

+0

완벽한 ....이 작품을 업데이 트되었습니다. 이것에 대한 의견 : http://stackoverflow.com/questions/15407491/how-do--restrict-the-currently-logged-in-user-to-only-see-products-that-belong? – marcamillion

관련 문제