はじめに
Ruby on Rails チュートリアルでの学習(1ヶ月)を含め、
初めてRailsに触れてから約半年でアプリケーションを開発した結果
色々荒が目立ちすぎだったのでメモとして残しておきます。
指摘は多々ありましたが、クリティカルだと思ったポイントについてピックアップしています。
(なお、自身で気が付くことができずに指摘されたポイントです)
自身の来歴(言い訳含む)
工業高校 => 理系大学(情報系)出身。
新卒で就職し、3年程エンジニアとしてJava一辺倒で開発を行う。
過度の残業・追い込みから退職し、病院にお世話になり、
約1年半程、業界無関係のアルバイトでフラフラしてみる。(ブランク)
その後二十代後半で転職し「Ruby on Rails チュートリアル」を1月かけて学習する。
初めてRuby及びRailsに触れてから約半年で社内用に新規アプリケーション開発を実施。
開発環境
Windows10 Pro
Hyper-V(Ubuntu 18.04 LTS)
VSCode(Remote–SSHを利用)
Ruby:2.7.3
Rails:6.0.3.7
指摘事項(加筆・修正の可能性あり)
(2)、(3)の打ち消し線の箇所については
現状記述する時間がないので、メモ代わりに記述しています。
今後、時間を捻出できた場合に追記する(かもしれない)ための
私的メモなので見逃していただければ幸いです。
(指摘いただいても返答いたしかねますのでご了承ください)
(1) Scope化しましょう。(コントローラ内にwhereメソッドは極力書かない。)
(2) default_scopeは極力使用しないようにしましょう。
(上記を使用する例:DB側で一意になる順序制御用のカラムがあり、そのモデルが他の並び順で出力するという仕様自体が稀である場合。)
(3)「rails new」コマンドではオプションを活用しましょう。
各指摘について
- (1) Scope化しましょう について(コードは脚色してあります)
// 悪い例 (コントローラ内に直接記載)
class FooController < ApplicationController
…省略
FooModel.where(hoge_date:search_hoge_date_start..search_hoge_date_end)
…省略
改善策
scopeを使いましょう。
(以下コード例)
//モデルにスコープを定義する
class FooModel < ApplicationRecord
scope :sorted_with_search_date, -> { where.sorted_with_search_date(hoge_date:search_hoge_date_start..search_hoge_date_end)
}
//コントローラ内ではscopeを呼び出すようにする
class FooController < ApplicationController
…省略
FooModel.sorted_with_search_date
…省略
他の指摘や解説については
時間が割けた時に記述します。