TECH EXPERT 24日目 実践的な Rails
Railsにおいて規約を守ことで性能を発揮する理念
DRY CoC
実態として結論付けるなら
ファイルの可読性、処理能力をよくするため
規約にのっとった記述の正確さ、記述の仕組み化して効率よく書こうって感じ
その規則の実体、オブジェクト指向に沿って考える。
MVCを見ていく。
ビュー
モジュールとヘルパーメソッド
モジュール インスタンスを生成できないクラス
Helper(ヘルパーメソッドを作成できるモジュール)
app/helpers配下に用意されており、application_helper.rbや、各コントローラーに対応したhelperのファイルに処理を記述することでヘルパーメソッドとして使用可能。
実際には〇〇Helperという形で定義されます。
application_helper.rb
module ApplicationHelper
def sample # sampleというヘルパーメソッドです
end
end
↑のようにApplicationHelper内へメソッドとして定義すると、ビューファイルで使用できる。
index.html.erb
<%= sample %>
ビューファイルへRubyの処理をたくさん記述してしまった場合や、繰り返し同じ処理を記述する場合は可読性考慮してヘルパーメソッドとして切り出す。
↓
仕組み化、効率化
コントローラー
Action Controller
Action Controllerとは、Ruby on Railsのアプリケーションにおいて、コントローラーの機能を実現するために必要なオブジェクト
コントローラーの役割「リクエストを受け取り、レスポンスを返すこと」
それ以外の記述は他に移すことで可読性が上がる。
例:データを加工する処理をモデルに切り出す
サービスクラスの定義:モデルにばっか処理を切り出すとモデルが太るから
複雑な処理はサービスクラスに切り出す。
app 直下に service ディレクトリを作成してクラスを定義する。
モデル Active Model オブジェクト
直接データベースを操作する処理はActive Recordという仕組み
「保存する前のデータを検証」などの処理を実現できるのはActive Model
Callbacksモジュール:データの保存時など「任意のタイミングでメソッドを実行する」を実現 処理の時間設定
Validationsモジュール:データの保存時にフィルター貼って検証するような役割 フィルター展開
Serializationモジュール: JSONなどで返却される値を調整できる。返す値を指定できる 戻り値の調整
フォームオブジェクト
フォームオブジェクト(Form Object)とは、フォームに関する処理を切り出す仕組み、大きく2つの場合に使用。
1つ目は、複数のモデルに関連するデータを一度に更新するフォームを作成する場合
2つ目は、モデルの存在しないデータを更新する場合
〇〇_form.rb
モデル Active Record
ORMとは、RDB(リレーショナルデータベース)のデータを、オブジェクト指向プログラミング言語でオブジェクトとして使用する為に変換する技術
SQL(エス・キュー・エル/シークェル)とは、Structured Query Languageの略で、RDBの操作を行うための言語ActiveRecordはSQLに変換されるためテーブルの操作が可能だったのだ
SELECT文とは、「データベースからデータを取得する」場合に使用しする、SQLの文法
(例) SELECT text FROM tweets;
#tweetsテーブルからtextというカラムのデータを取得
find_by_sqlメソッド:Ruby on RailsでSQL文を使用し、データを検索し取得する際に使用するメソッド
復習が必要だなこりゃ