2011-01-24 6 views
11

私はちょうどRailsで始まっています。私はまだ学ぶ必要があるので、私は普通のRails/Rubyの質問よりも頻繁にStackoverflowにいる可能性が高いです。ヘルパーのレール

ヘルパーがRailsでどのように動作するかを理解しようとしています。これまで見てきたことから、ヘルパーはビューで使用することを意図しており、コントローラではあまり使用されません。

しかし、paramsで指定されたユーザー入力を検証する(特定のパラメーターが定義されているかどうかを確認し、その値が有効かどうかをオプションでチェックする)簡単な関数を作りたいと思います。

これを実装する最善の方法は誰にでも分かりますか? (これは多くの異なるコントローラでこれを使用して、グローバルに利用できるようにすることを覚えておいてください)

また、Railsはデフォルトでアプリケーションフォルダにlibフォルダを生成しません。開発者はlibをメインフォルダのappフォルダの外に置くか、Railsはライブラリを別々に使いますか?

答えて

20

検証の問題に関しては、検証する内容によって異なります。

データが問題のドメイン(モデルとも呼ばれます)のオブジェクトを構成する場合は、ActiveModelの組み込みバリデーターを使用する必要があります。これはおそらくあなたがすべきことですが、正確な問題を知らなくては言い難いです。 Rails Guides on Validationsを参照してください。検証が必要なデータが取得された後に保存されるかどうかを尋ねることで、これが正しいかどうかを判断できます。もしそうなら、その最も確かなモデルです。この種のデータの例は、ブラウザフォームからRailsに送信されるブログ投稿のタイトルとテキストフィールドです。

データがモデルの何か、またはプレゼンテーション固有のものである場合は、ヘルパーを使用してうまくいくはずです。ヘルパーは主にビューで使用されていることに気がつきましたが、これは当てはまりますが、コントローラーでヘルパーを使用することを止めるものではありません。ActiveController#helperメソッドを使用すると宣言するだけです。 ApplicationControllerクラスの中で、たくさんの開発者がhelper :allにすべてのヘルパーをすべてのコントローラに含めるだけです。一旦コードが一度必要とされると、それほど大きなパフォーマンスにはならない。

ほとんどの着信データは、モデルを使用してモデル化できることに注意してください。 Railsの世界での大きな考え方は、Fat Modelのアイデアを購読することです。人々はできるだけ多くのコードをモデルに入れ、可能な限りコントローラーをほとんど使用しないことで、懸念が適切に分離され、より保守的なコードにつながると言われています。これは、入ってくるデータがモデル化可能であるとは考えていないとしても(モデルを作成するという意味で)、それをモデルにして、その検証のためにロジックをカプセル化しようとするべきです。ただし、ヘルパー関数を作成する方が高速で、どちらかが機能することがあります。

ユーザー入力を検証するという概念は、優れたものです。私はあなたがRailsの初心者であれば、自分でこれらのことをするのに慣れているが、それはここではあまり適用されないという気持ちがある。 Railsの世界では、バリデーションのような共通のものがフレームワークによって処理されます。params配列の存在を確認する必要はなく、validates_presence_ofをモデルに呼び出し、Railsにエラーを吐き出させます。フレームワークが設計されたものになるようにすれば、長期的にはより簡単になります。

libフォルダに関するご質問に関しては、実際には問題ありません。その他のサポートファイルとライブラリは、ルートディレクトリのlibフォルダに置くことができ、アプリケーションで使用することができます(appフォルダ内のファイル)。また、コードをプラグインまたは宝石に抽象化し、その方法を含めることもできます。多くの人がこれを選択します。これについての私の提案は、ダイビングの前に宝石やプラグインの概念を読み上げることです。

+0

ありがとう、非常に便利な説明!あなたは、フレームワークに共通のものをさせるのではなく、これらのことを自分自身でやることに慣れているという点では正しいです。レールがあなたのためにこれを行うのは意味があります。ただそれに慣れなければなりません。私はモデルレベルで入力を検証しようとします。 – Naatan

1

あなたは旺旺おそらく(Rails3で)カスタムバリデータである:

http://railscasts.com/episodes/211-validations-in-rails-3

あなたが作成libフォルダにLIBSを追加したり、追加のファイルにconfig/initializersにそれらを追加することができます。 initializersディレクトリのファイルはRailsによって自動的に読み込まれます。

関連する問題