〜Ruby on Rails5〜 7つのアクション編
〜運用環境について〜
detabase.yml
Ralisアプリケーションのデータベースの設定ファイルのこと。このファイルを編集することで、データベースの設定を運用環境ごとに変更することができる。
運用環境
システムをどこで使用するか定められている環境のこと。環境を使い分けることで効率的に作業を進めることができる。また、運用環境は3種類あり、目的によって使い分けることが大事になる。
⑴development
アプリケーションを開発する際に使う環境
⑵test
アプリケーションの動作をテストする際に使う環境
⑶production
アプリケーションを実際にリリースする際に使用する環境。
RDB (リレーショナル・データベース)
表形式でデータを管理するデータベース。行と列を持っていてデータベースにおいては、行を『レコード』、列を『カラム』という。
RDBMS(RDB・マネジメント・システム)
RDB(リレーショナル・データベース)を使用する際、それを管理するシステムのことをいう。※MySQLもRDBMSの1つです。
〜ライブラリ導入について〜
ライブラリ
プログラミングにおける拡張機能のこと。他のプログラムと組み合わせて使用するために、複雑なプログラムを1つのセットにしたもの。複雑な機能実装でも、ライブラリをアプリへ読み込ませることにより、簡単に実装できるようになる。
RubyGems
Rubyのライブラリを管理するシステムのこと。Rubyでは、RubyGemsにアクセスしてGemを取得する、『gemコマンド』が利用可能です。
Gem
ライブラリのこと。
Gemfile
アプリケーションで使用するGemの『名前』と『バージョン』の情報を記載し、管理するファイル。
Gemfile.lock
『bundle(バンドル) install』によってインストール済みとなったGemの情報を記録するファイル。
pry-rails(Gem)
railsのコンソールでメソッドなどを使えるようにできる機能を追加するGem。
bundle updateコマンド
Gemのバージョンを新しく指定し直した時に使うコマンド。
〜ツイートを保存しよう〜
CRUD
データの取り扱いの基本処理のこと。『Create(生成)』『Read(読み取り)』『Update(更新)』『Delete(削除)』の頭文字を並べたもの。Railsでは、CRUDを7つのアクションに分割して処理する。
7つのアクション
⑴ index(一覧表示)
⑵ show(詳細表示)
⑶ new(生成)
⑷ create(保存)
⑸ edit(編集)
⑹ update(更新)
⑺ destroy(削除)
resourcesメソッド
7つのアクションへのルーティングを自動生成するメソッド。resourceの引数に、『:tweets』というシンボルを指定すると『/tweets』のパスに対応するルーティングが生成させる。
【例】resourcesメソッドの使用例
Rails/application.routes.drow do
resources :tweets
end
onlyオプション
resourceにオプションとしてonlyを加えると、指定したアクションのみルーティングを自動生成する。
【例】resourcesメソッドの使用例
Ralis.application.routes.drow do
resources :tweets, only: :index
end
rails g controllerコマンド
指定したコントローラーを削除するコマンド。このコマンドで削除を実行すると、自動で作成された関連ファイルも同時に削除されるので便利。
【例】ターミナル
% rails d controller コントローラー名
レイアウトテンプレート
アプリケーションのビューファイルの共通部分をまとめたもの。レイアウトテンプレートに、headの情報やヘッダー、フッターなどの全てのビューで共通となる部分を記述しておくことで、各テンプレートファイルは個別の見た目を記述するだけで良くなる。Railsの場合、『application.html.erb』というファイルがレイアウトテンプレートとなる。
application,html.erbファイル
Railsのレイアウトテンプレートに該当するファイル。
yield(イールド)メソッド
レイアウトテンプレートに、各テンプレートファイルを展開するためのメソッド。application.html.erb中のbody要素内に『<%= yield%>』の記述がある。この記述があることで、『body要素内に各ビューファイルの記述が集結される』という仕組みができている。
stylesheet_link_tagメソッド
読み込むCSSファイルを指定できるヘルパーメソッド。application.thml.erbのsthlesheet_link_tagの引数には、『application』と書かれているため、『app/assets/stylesheets/』ディレクトリ内のapplication.cssファイルを読み込むことを示している。
<%= stylesheet_link_tag 'application, media: 'all', 'date-turbolinks-track': 'reload' %>
application.cssファイル
Railsにはじめから用意されている、CSSファイルをまとめるためのファイル。マニフィストファイルとも呼ばれる。アプリケーション全体に適用するCSSを指定できる。
/* * This is a manifest file that'll be compiled into application.css, which will include all the files * listed below. * * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's * vendor/assets/stylesheets directory can be referenced here using a relative path. * * You're free to add application-wide styles to this file and they'll appear at the bottom of the * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS * files in this directory. Styles in this file should be added after the last require_* statement. * It is generally better to create a new file per style scope. * *= require_tree . *= require_self */
注目するポイントは、『*= require_tree.』という記述。*=コメントアウトとは異なり、SprocketsというGemの特殊記法(ディレクティブ)のこと。
require_tree
引数として与えられたディレクトリ以下のCSSファイルをアルファベット順にすべて読み込むという機能を持つ。引数に与えられた.(ドット)は、カレントディレクトリを表す。
ルートパスの設定
『root to: 'コントローラー名#アクション名'』で設定できる。
〜ツイートを保存しよう〜
アプリケーションのデータ保存は、newアクションとcreateアクションを組み合わせて実装する。
form_with(ヘルパーメソッド)の記載方法(2種類)
【例】①オプションが『url』の場合
<%= form_with url: "/posts", method: :post, local: true do |form|%>
<%# ファームの内部 %>
<% end %>
【例】②オプションが『model』の場合
<%= form_with (model: @tweet, local; true) do |form| %>
<%# ファームの内部%>
<% end %>
②のようにファームを記述することで、『url』で投稿先を指定したり、『method』でHTTPメソッドを指定したりする必要がなくなる。
ストロングパラメーター(保存方法の1つ)
指定したキーを持つパラメーターのみを受け取るように制限するもの。定義する際には、requireメソッドと、permitメソッドを組み合わせて使用する。
⑴requireメソッド
送信されたパラメーターの情報を持つparamsが、使用できるメソッド。パラメーターからどの情報を取得するか、選択する。ストロングパラメーターとして使用する場合は、主にモデル名を指定する。またモデル名以外のキーも指定できる
【例】require
params.require(:モデル名) #取得したい情報を指定する。
『params[:モデル名]』としても同じ情報を取得できるが、requireメソッドを使うことで、意図しないパラメーターであった場合にエラーとして返すことができ、原因特定やユーザーにエラーを示すなどの対応ができる。
⑵permitメソッド
paramsが使用できるメソッドで、取得したいキーを指定でき、指定したキーと値のセットのみを取得できる。
params.require(:モデル名).permit(:キー名, :キー名)
#取得したいキーを指定する。
プライベートメソッド
クラス外から呼び出すことのできないメソッド。Rubyでは、『private』と記述した以下のコードプライデートメソッドとなる。
メリット
⑴ Classの外部から呼ばれたら困るメソッドを隔離
⑵ 可読性
バリデーション
データを登録する際に、一定の制約をかけること。バリデーションを設ける際は、モデルに『validates』メソッドを記述する。
【例】
・空のデータが登録できないようにする。
・すでに登録されている文字列を登録できないようにする。
・文字数制限をかける。
validates
バリデーションを設定する時に使用するメソッド。
【例】モデルファイル
validates :カラム名, バリデーションの種類
バリデーションの種類に『presence: true』と記述することで、nameカラムが『空ではないか』というバリデーションを設けることができる。
【例】モデルファイル
validates :カラム名, presence: true
〜ツイートを削除しよう〜
アプリケーションのデータ削除は、destroyアクションで実装する。
削除ボタン追加方法
『link_to』メソッドを使用して、削除ボタンを追加する。削除するツイートを区別するために、削除ボタンのパスにはツイートのidをパラメーターとして持たせる。HTTPメソッドは、『DELETE』というメソッドを指定する。指定方法は、methodオプションにシンボルで『:delete』とする。
Prefix(プレフィックス)
ルーティングの『URI Pattern』に名前をつけて変数化したもの。これにより、『URI Pattern』の代わりに『Prefix』を用いてパスを表現できる。prefixの確認方法としては、ターミナルで『rails routes』コマンドを実行することで確認できる。
※『URI Pattern』とは、URLと同じようなもの。
Prefix(プレフィックス)を用いてパスを指定する方法
【出力結果】
Prefix Verb URI Pattern Controller#Action tweets GET /tweets(.:format) tweets#index POST /tweets(.:format) tweets#create new_tweet GET /tweets/new(.:format) tweets#new tweet DELETE /tweets/:id(.:format)
⑴ ターミナルで『rails routes』コマンドを実行し、『Prefix』を確認する。
⑵ 『Prefix』が『tweet』なので、『tweet_path』とパスを指定する。
⑶ 『Prefix』を用いる前が、『"/tweets/#{tweet.id}"』と記述してそれぞれのツイートのID(tweet.id)が入るようにしていた場合は、『tweet_path(tweet.id)』のようにPrefixの引数として渡すようにする。
〜ツイートを編集しよう〜
アプリケーションの編集機能は、editアクションとupdateアクションを組み合わせて実装する。
PARCH(HTTPメソッド)
情報を送信する際に使用するメソッド。
〜ツイートの詳細を表示しよう〜
アプリケーションの詳細表示機能は、showアクションで実装する。
berore_action
コントローラで定義されたアクションが実行される前に、共通の処理を行うことができる。berore_actionの後ろに『処理させたいメソッド名』を記載することで、アクションが実行されるより前に処理をする。
また、resourcesと同様にonlyオプションなどを使用することで、どのアクションの実行前に、処理を実行するか決めることできる。