Ruby-on-rails-2.1-rails-scaffolding
Ruby on Rails 2.1-足場
Railsアプリケーション、特にデータベース内のデータへのシンプルなインターフェイスを主に提供しているアプリケーションを開発している場合、scaffoldメソッドを使用すると便利な場合があります。
足場は、安価なデモスリル以上のものを提供します。 ここにいくつかの利点があります-
- フィードバックのために、ユーザーの前でコードをすばやく取得できます。
- あなたはより速い成功によって動機づけられます。
- 生成されたコードを見ると、Railsの仕組みを学ぶことができます。
- 足場を基盤として使用して、開発を開始できます。
足場の例
Ruby on Rails 2.0は、Railsがscaffoldingを使用する方法を変更します。 _scaffolding_を理解するために、 cookbook というデータベースと recipes というテーブルを作成してみましょう。 −
空のRails Webアプリケーションを作成する
コマンドウィンドウを開き、この cookbook Webアプリケーションを作成する場所に移動します。 c:\ rubyを使用しました。 次のコマンドを実行して、完全なディレクトリ構造と必要な_.yml_ファイルMySQLデータベースを作成します。
ここでは、-d mysql *オプションを使用して、MySQLデータベースを使用する関心を指定しています。 *-d オプションを使用して、_oracle_や_postgress_などの他のデータベース名を指定できます。 デフォルトでは、Railsは SQLite データベースを使用します。
データベースのセットアップ
データベースを作成する方法は次のとおりです-
データベースを見つけるようにRailsに指示するには、構成ファイル〜\ cookbook \ config \ database.ymlを編集し、データベース名をcookbookに変更します。 終了したら、次のようになります-
注-MySQL以外の他のデータベースを使用する場合は、他のデータベースアダプターに同様の設定を使用できます。
Railsでは、異なるデータベースを使用して、開発モード、テストモード、または運用モードで実行できます。 このアプリケーションは、それぞれに同じデータベースを使用します。
データベーステーブルの定義
私たちの recipes テーブルに次の構造を仮定します-
生成された足場コード
_scaffold_アクションを使用すると、Railsは必要なすべてのコードを動的に生成します。 _scaffold_をスクリプトとして実行することにより、モデル、足場、必要なデータベース移行スクリプト、コントローラー、ヘルパー、テストサポートファイルを次のように生成します-
単数の名前_Recipe_に注意して、複数のテーブル名_recipes_を作成します。 ただし、上記のコマンドは次のメッセージを生成します-
それでは、舞台裏で何が起こったのかを見てみましょう。
コントローラー
コントローラーの背後にあるコードを見てみましょう。 このコードは、 scaffold ジェネレーターによって生成されます。 app/controllers/recipes_controller.rbを開くと、次のようなものが見つかります-
このファイルには、すべてのメソッドが自動的に実装されています。 これらの使用可能な方法を使用して、作成、読み取り、削除、または編集操作を実行できます。
Railsアプリケーションのユーザーが "Show"などのアクションを選択すると、コントローラーは適切なセクションのコードを実行します-"def show"-そしてデフォルトで同じ名前のテンプレートをレンダリングします-"showl.erb 」 このデフォルトの動作は、テンプレートのコードを上書きすることで上書きできます。 −
コントローラーは、_find、find_all、new、save、update_attributes、destroy_などのActiveRecordメソッドを使用して、データベーステーブルとの間でデータを移動します。 SQLステートメントを記述する必要はありません。Railsが自動的に処理します。
ビュー
すべてのビューと対応するコントローラーメソッドは scaffold コマンドによって作成され、app/views/recipesディレクトリで使用できます。 このディレクトリに次のファイルがあります-
- indexl.erb -これはデフォルトのページを表示するためのテンプレートファイルで、http://127.0.0.1:3000/recipesと入力すると実行されます。
- newl.erb -これは新しいレシピを作成するためのテンプレートであり、新しいレシピを作成しようとするたびに実行されます。
- showl.erb -これは、データベース内のすべてのレシピを表示するテンプレートであり、すべてのレシピを表示しようとするたびに実行されます。
- editl.erb -これは、データベース内のレシピを編集するためのテンプレートであり、レシピを編集しようとするたびに実行されます。
これらのファイルを1つずつ開き、ソースコードを理解することをお勧めします。
移行
- 〜/cookbook/db/migrate *サブディレクトリに作成された移行ファイルがあります。 このファイルには次の内容が含まれます-
データベースに必要なファイルを作成するには、次のようにヘルパースクリプトを使用します。
このコマンドは、 cookbook データベースに recipes および schema_migrations テーブルを作成します。 先に進む前に、データベースに必要なテーブルが正常に作成されていることを確認してください。
テストする準備ができて
上記のすべての手順により、データベーステーブルに命が吹き込まれます。 それはあなたのデータへのシンプルなインターフェースと方法を提供します-
- 新しいエントリを作成する
- 現在のエントリを編集する
- 現在のエントリを表示する
- 現在のエントリを破棄する
エントリを作成または編集するとき、scaffoldはフォームの生成と処理のすべてのハードワークを行います。 次のタイプの入力をサポートする、巧妙なフォーム生成も提供します-
- 単純なテキスト文字列
- テキスト領域(またはテキストの大きなブロック)
- 日付セレクター *日時セレクター
今、クックブックのディレクトリに移動し、次のコマンドを使用してWebサーバーを実行します-
次に、ブラウザを開いてhttp://127.0.0.1:3000/recipes/newに移動します。 レシピテーブルに新しいエントリを作成する画面が表示されます。 スクリーンショットを以下に示します-
次に、指定されたテキストボックスに値を入力し、[作成]ボタンを押して新しいレシピを作成します。 あなたの記録は、レシピ表に追加され、それは次の結果を示しています-
[編集]オプションを使用してレシピを編集するか、[戻る]ボタンを使用して前のページに移動できます。* Back *ボタンを押したとすると、データベースで利用可能なすべてのレシピが表示されます。 データベースにはレコードが1つしかないため、次の画面が表示されます-
この画面には、レシピテーブルの完全な詳細を表示するオプションがあります。 さらに、テーブルを編集または削除するオプションも提供します。
モデルの強化
Railsは、多くのエラー処理を無料で提供します。 これを理解するには、空のレシピモデルにいくつかの検証ルールを追加します-
次のように*〜/cookbook/app/models/recipe.rb *を変更し、アプリケーションをテストします-
これらのエントリは、次のような自動チェックを提供します-
- validates_length_of -フィールドは空白ではなく、長すぎません。
- validates_uniqueness_of -重複する値はトラップされます。 デフォルトのRailsエラーメッセージの代わりに、カスタムメッセージを指定しました。
ここでは、既存のレコードの編集中に、より大きなタイトルを提供しようとしています。 上記の検証を追加したという理由だけで、次のエラーメッセージが生成されます-
足場の違いは何ですか?
前の章を読んだことがある方は、データをリスト、表示、削除、作成するメソッドが作成されているのをご覧になったはずですが、scaffoldingはその仕事を自動的に行います。