前提・実現したいこと
ユーザが複数プロジェクトに所属する(ユーザ:プロジェクト=N:N)のとき、
Devise でユーザログイン -> プロジェクト選択 で、対象プロジェクト専用画面を表示させたいと考えております。
そこで、モデルを下記のように作成しました。
[ user.rb ] class User < ApplicationRecord has_many :user_projects has_many :projects, through: :user_projects end
[ project.rb ] class Project < ApplicationRecord has_many :user_projects has_many :users, through: :user_projects end
[ user_project.rb ] class UserProject < ApplicationRecord belongs_to :user belongs_to :project end
プロジェクト専用画面のURLは全て共通(/projecthome)で、サーバ側でどのユーザがどのプロジェクトでアクセスしているか判断して表示内容を書き換えたいと思っています。
このとき、
[1] user_project にセッションの hash 項目を持たせ、user ログイン時の hash を格納し、ページアクセスの都度突合する。
[2] user にアクセス中のプロジェクト項目を持たせるなどし、プロジェクト選択時に project_id(または user_project_id) を格納し、ページアクセスの都度判断する。
など考えましたが、イマイチしっくりこず。。。
先達のお知恵を拝借できればと考えた次第になります。
何か良い方法やサイトがあれば教えて下さい!
補足情報(FW/ツールのバージョンなど)
ruby 2.7.0
Rails 6.0.3.5
devise 4.7.3
あなたの回答
tips
プレビュー