アカウントが候補者と関連タスクを表示できるようにする必要がある新しいプロジェクトを開始しました。
account.rb
has_many :candidates
Candidate.rb
has_many :tasks
belongs_to :account
task.rb
belongs_to :candidate
ルートは/candidates/ 4 / tasks / 3を許可するように設定されており、アカウントXはタスク3を持つ候補者4にアクセスできます。
tasks_controller.rbは現在次のようなものです:
def show
@task = Task.find params[:id]
end
質問:他のアカウントがタスク3にアクセスできないようにするためのベストプラクティスのアプローチは何ですか?
1つのアイデアはこのようなものかもしれませんが、非常に厄介なようです。
def show
@task = Account.find(current_account).candidates.find(params[:candidate_id]).tasks.find(params[:id)
end
したがって、結合が失敗した場合、アクセス権はありません。
別の方法は、スコープを使用して実行される場合があります。照会されたすべてのタスクが候補者およびcurrent_accountに結合されていることを確認します。
また、before_filterを実行して、候補テーブルに対してスタンドアロンクエリを実行し、アカウントにアクセス権があることを確認することもできます。これによりクエリが追加されるため、理想的ではありません。
私はここで困惑しています...しかし、他の人がこれについてどうやって行くのか知りたいですか?