2011-10-19 11 views
0

DeviseとCanCanを使用して、アプリケーションで認証と承認を設定しています。今、私は、ユーザーが特定のモデルを好き嫌いすることを可能にするようなシステムを構築しています。ユーザーが自分のコンテンツに投票するのを防ぐ最も良い方法は何ですか?Rails 3:ユーザーが自分のコンテンツに投票するのを防ぐ

現在、コンテンツ所有者が現在のユーザーと等しいかどうかコントローラにチェックインしていますが、このロジックは能力モデル上にあるはずです。

答えて

1

私はカンカンを使用しての経験がないが、多分あなたは、このようにブロックを使用することができます。その後、

class Ability 
    include CanCan::Ability 

    def initialize(user) 
     ... 
     can :like, Product, :user_id => user.id 
     ... 
    end 
end 

と:あなたのability.rbで

can :like, Product do |product| 
    product.try(:owner) != user 
end 
+0

イゴール、これはアイデアだと思います。私はLikeのアクションを作成しましたが、私はあなたの例でどのように製品と組み合わせることができないのか分かりません。私の能力は次のとおりです: 'できます: のようにできます: like.try(:user)==ユーザ end' – luizbranco

0

あなたはこのような何かをする必要がありますコントローラで:

@product.like if can? :like, @product 

はまたあなたのビューで、あなたはその後のようなボタンを非表示にすることができます:

<% if can? :like, @product%> 
    <%= link_to "Like", like_product_path(@product) %> 
<% end %> 
関連する問題