2011-11-16 11 views
5

私はSearchモデルとコントローラを持っています。ビジネスロジックは、ユーザーのキーワードが商品のモデル番号と完全に一致する場合は、それらを商品ページにリダイレクトすることです。良い習慣 - モデルのリダイレクト? - レール3.1

この状況では、モデルの内部からリダイレクトするだけで済みます(ほとんどのロジックはすでに存在しています)。

リダイレクトを処理できるように、フラグや何かをコントローラに返す必要がありますか?

答えて

9

モデルオブジェクトは、リダイレクトを実行しません。アプリケーションロジックはコントローラの義務であるため、コントローラは、製品がモデル番号と一致するかどうかをモデルオブジェクトに(要求の結果として)尋ね、コントローラがリダイレクトを実行する必要があります。モデルオブジェクトはコントローラやビューについて何も知ってはいけません。これは、Railsによって実装されている"Model-View-Controller concept"の一部です。

RailsはモデルをActiveRecord patternとして実装しているため、モデルオブジェクトがデータベースを担当し、データベースに検索が含まれていることは間違いありません。何がモデルオブジェクトの責任であるか見るには、Rails Guides for ActiveRecord Queriesにある多くのオプションを参照してください。

+0

モデルにrun_search機能を持たせても問題ありません。複数のモデルにまたがってdbを検索したり、コントローラにも同様の操作をさせることをお勧めしますか? – Jacob

+0

私は私の答えを広げます。 – mliebelt

4

必ずMVCパターンを覚えている:MVC in Rails

モデルは、リダイレクトまたはコントローラに関連するいくつかの他のものの世話をしてはなりません。リダイレクションをコントローラに任せる。

関連する問題