〜Ruby on Rails5〜 7つのアクション編

〜運用環境について〜

detabase.yml

 Ralisアプリケーションのデータベースの設定ファイルのこと。このファイルを編集することで、データベースの設定を運用環境ごとに変更することができる。 

運用環境 

 システムをどこで使用するか定められている環境のこと。環境を使い分けることで効率的に作業を進めることができる。また、運用環境は3種類あり、目的によって使い分けることが大事になる。

 ⑴development

  アプリケーションを開発する際に使う環境 

 ⑵test

  アプリケーションの動作をテストする際に使う環境

 ⑶production

  アプリケーションを実際にリリースする際に使用する環境。 

RDB (リレーショナル・データベース)

 表形式でデータを管理するデータベース。行と列を持っていてデータベースにおいては、行を『レコード』、列を『カラム』という。

RDBMSRDB・マネジメント・システム 

 RDB(リレーショナル・データベース)を使用する際、それを管理するシステムのことをいう。※MySQLRDBMSの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では、CRUD7つのアクションに分割して処理する。 

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要素内に各ビューファイルの記述が集結される』という仕組みができている。

 読み込む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オプションなどを使用することで、どのアクションの実行前に、処理を実行するか決めることできる。