ユーザーがプロジェクトを作成し、プロジェクトに投稿を追加できる Rails 4 アプリを作成しています。投稿は、テキストとオプションのキャプション付きの画像で構成されるため、画像とそのキャプションを格納する写真モデルがあります。
ユーザーには多くのプロジェクトがあり、プロジェクトには多くの投稿があり、投稿には多くの写真があります
私のルートは次のようになります。
resources :projects do
resources :posts
end
resources :posts do
resources :photos
end
投稿は user_id が保存されているプロジェクトに直接関連しているため、 current_user による承認はプロジェクトと投稿に対して機能します。写真は投稿に直接リンクするだけなので、投稿コントローラーで行うようにこれを行うことはできません。
def set_project
@project = current_user.projects.find(params[:project_id])
end
プロジェクトの作成者のみが投稿に写真を追加、編集、削除できるように、写真に current_user を同様の方法で使用する方法はありますか?
現在、写真コントローラーで、次の方法で関連する投稿を取得します。
def set_post
@post = Post.find(params[:post_id])
end
しかし、それには明らかに current_user 権限がありません。投稿が属するプロジェクトの ID を見つけてから、写真コントローラー内で current_user を使用する方法が必要です。