2016-08-30 8 views
0

無効なIDが渡されたときに私のindex()メソッドを通知したいが、私はそのページを500でbarfにしたくない。モデルIDをスキップするためのインデックスメソッドを設定しています)。しかし、私はそれらの無効なモデルIDをどうにかして追跡したいと思います。RoR - インデックスメソッドで無効なIDを追跡する

index()が実行されている無効なIDを追跡するにはどうすればよいですか?

+0

あなたのユースケースを知らずにID。しかし、それらをファイルに保存することは、合理的なアプローチに見えます。 –

答えて

1

あなたが標準リソースresources :somethingを持っている場合は、この

/something/#{invalid_id}

のような無効なルートを意味するならば、そして、あなたは彼らがshowアクションになり、indexアクションでこれらをキャッチしません。あなたはshowアクションの条件付きロジックの量をわずかに減らすためにbefore_filterでこれを達成することができます。コントローラで

before_filter :check_valid_id, only: [:show]

とコントローラのプライベートセクションで

def check_valid_id unless find_something log(params[:id]) redirect_to :index end end あなたはまた、破壊し、提供し、そのような編集、更新などの他のメンバーのルートでcheck_valid_idすることをお勧めします

IDが無効であるというフラッシュメッセージ

+0

なので、 'invalidIds =" model_type_id NOT IN(#{validIdList}) "のようなことはありません。" – 123

+0

可能なすべての間違ったIDのリストを作成すべきではありません。あなたのIDは最大2^64(または1.84 x 10^19)から有効なIDの数を差し引いた数です。必要なコンピューティングによって、サイトが役に立たなくなる可能性があります。 – Okomikeruko

+0

私はそれが何をしようとしているのか分からないかもしれません、インデックス/ショーの責任を一緒に混ぜているようです。これは検索操作ですか? – Austio

関連する問題