Blank?=Falseスマートフォン用の表示で見るBlank?=False「呉下の阿蒙にあらず」をモットーにしたITエンジニアの日々Blank?=Falseこの広告は、90日以上更新していないブログに表示しています。2016-07-14Railsのリソースとルーティングについて今回はRailsの基礎の1つ、リソースについて書いていきます。Railsでは以下のように書かれています。Railsにおけるリソースとは、コントローラが扱う対象に名前をつけたものです。コントローラが扱うものといえばモデルだな!と思ったら、実際のところはセッション等も扱うので、モデルだけとは限らないと書かれていました。モデル≒リソース,モデルはリソースの1種として捉えるのが良さそうです。モデルの他のリソースとしては、セッション,画像,ファイル等が考えられます。リソースのルーティングとはルーティングとは、動きだけ考えると色々なURIを作るやつというイメージ。コレをちゃんと説明すると、それぞれのリソースに適した動作ができるURIを生成し、コントローラのアクションとのマッピングを行うというのがルーティングの役目、と自分は解釈しています。REST的に考えると、有るリソースに対して、表示する、作成する、編集する、削除する、のそれぞれの機能にあったユニークなURIを作るわけです。削除するdestroyの4つのURIを作るのがルーティングです。URIというリソースの通り道を作るわけですね。このルーティングを行う場合、routes.rbには以下のように記述します。:userendこの記述をすることで、以下の様なルーティングができるわけです。:userは複数リソースです。この他に、単数リソースというものがあります。先ほどの、userを単数リソースとして宣言する場合、コードは以下のようになります。:usrend生成されるURIパターンは以下のようになります。users#destroyどうちがうの?users#showを比べてみます。Patternで複数リソースには:idがあることです。この:idはユーザーのIDです。複数いるユーザーのうち1人ということを表しています。単数リソースでは:idはありません。ユーザーは1人しかいないということです。このように必ず1つしかないリソースのルーティングをするときに、単数リソースを使います。モデルはUsersを使うんだけどログインしているユーザーのアカウントだけを扱うリソースaccountが欲しい!という時に単数リソースが活用できます。どこでつかうの?最初に話にあげたセッションや、次の話になるネストされたリソース、先ほどのaccountリソース等で使います。言うものはRailsではそこまで多くはないと思います。ちなみに、400行近いRedimineのroutes.rbを見てもresourceは1つしかありません。リソースのネストRails、というよりもほぼすべてのアプリケーションのデータは親子関係(階層関係)を持つことがほとんどです。ExcelのワークブックはWorkbookというデータクラスの下にWorksheetが有り、更にその下にCellが有ります。Railでも、has_many,has_one等でリソースの親子関係を作ることが有ります。例として、「複数のユーザーがいて、それぞれのユーザーは、複数の本を持つ」という親子関係をルーティングしてみます。イメージとしては、こういう感じです。コードとしては以下のようになります。endendこのコードが生成するURIパターンは、以下のようになります。users#deletebooks#showのURIパターンを見ると、:user_idで特定のユーザーを示し、その下に/books/:idでそのユーザーが持つ特定の本を表示する、という風にURIが作られているのがわかると思います。いうわかりやすいURIを作るのがRESTなのです。RESTの一部を無効化するindex,show,edit,deleteがすべてできることをRESTFulと言いますが、この内幾つかの項目は必要ないこともあります。ネストしたリソースはindex,showだけできればいい、もしくはdelete,destroyはいらない、ということは良く有ります。いうときは、only,exceptオプションを使うことで実現できます。users#updateいつ使うの?例えば、セッションのリソースでは、showもupdateも必要ありませんよね。作る、廃棄する、の2つだけで十分です。]の2つのアクションだけを持つリソースを作れます。ネストしたリソースでは、ユーザーのアカウント画面では新規作成と削除はできないといった事が必要になります。いった時に使うことができます。22:26RailsのリソースとルーティングについてTweet広告を非表示にする関連記事2016-11-23MacOSXにMongoDBをインストールしてみた。Design12月号のNoSQLの教科書の記事を読んで、MongoDB...2016-06-25RESTとはRubyOnRailsにおいて重要なキーワード、REST。データベースとモデル基礎RubyOnRails、今回はデータベース回です。»Profile某製造業の社内Sler。今のお仕事のメインはAccessとVBA。元パッケージソフト開発者。VBA、そしてRDBやNoSQLを組み合わせたアプリケーション開発を得意としています。福岡県、もしくは熊本県へIターン転職に向けて、DB/NoSQLの業務に関われる会社を探しています。レベル1取得しましたリファクタリングの帽子をかぶるということ勉強は大変だが役に立つCUIなCentOS7にcinnamonを導入するLinuxのコマンドはMacOSXでそのまま動くとは限らない月別アーカイブTwitterGooglePocketはてなブログをはじめよう!stonebeach-dakarさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。