ねえ、私が助けてくれることを願っています。あなたのレコードを編集するようにユーザーを制限する方法
私は製作宝石とレール3を使用しています。
私は、ユーザーが作成した投稿/コメントのみを編集できるようにする方法を見つけようとしています。
これにCanCanの宝石を追加してもいいですか、それとも私はそれをdeviseで行うことができますか?または、単純なActive Recordクエリが可能ですか?
多くのありがとうございます。
ねえ、私が助けてくれることを願っています。あなたのレコードを編集するようにユーザーを制限する方法
私は製作宝石とレール3を使用しています。
私は、ユーザーが作成した投稿/コメントのみを編集できるようにする方法を見つけようとしています。
これにCanCanの宝石を追加してもいいですか、それとも私はそれをdeviseで行うことができますか?または、単純なActive Recordクエリが可能ですか?
多くのありがとうございます。
Deviseはコントローラ、モデル、およびビューで使用できるハッシュcurrent_user
を作成します。したがって、次のようなチェックを作成するのは簡単です:
@comment = Comment.find(params[:id])
if current_user.id == @comment.user.id
# yadda
end
CanCanはあなたのニーズに少し過剰ですが、後の進化のためにはより柔軟です。
それ以外の場合は、user_idとauthor_idを比較してください。
class PostsController < ApplicationController
def edit
# Instead of this:
# Post.find(params[:id])
# Use this:
current_user.posts.find(params[:id])
end
end
これは場合にのみポストを見つけます:
ありがとう!私はCanCanを念頭に置いておきます:D – daniel
あなたはUser
とPost
/Comment
との関係を持っていると仮定すると、あなたはあなたのedit
アクションでユーザーに属するレコードをフェッチだけに、この関係を使用することができます現在のユーザーが作成しました。
もちろん、update
のアクションも変更する必要があります。
IMO cancancanは長期的な視点から進む方法です。あなたはより多くのパワーとコントロールを持っていますが、小さな学習曲線を犠牲にしています。 – BKSpurgeon