fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

Rails - モデル

クラスメソッドは基本使わない?

modelのクラスメソッドは基本使わない 特に、引数にオブジェクトいくつも渡してるのはNG、使い勝手が悪い 使うのは、createしない限りインスタンスが存在しない場合など 使わない理由は、rails consoleでオブジェクト作成しにくい、そもそもインスタンスメソ…

Rails - シングルテーブル継承(STI)とは

STIとは? Active Record の関連付け (アソシエーション) - Rails ガイド STIの詳細1(実例やメリットとデメリット等) Single-table inheritance vs. polymorphic associations in Rails: find what works for you STIの詳細2(歴史、実例、代替方法、デメリッ…

Rails における内部結合、外部結合

ズバリのQiita記事が沢山あるのでリンク貼り付けRails における内部結合、外部結合まとめ - Qiita

Rails - 複数レコードの一括登録でパフォーマンスを向上させる

JavaでいうaddBatch、executeBatchで一括登録する方法をRailsでもできないかを探した。 activerecord-import gemを使うとRailsでも同様のことが可能とのこと。 利用方法、パフォーマンス比較等 Qiita qiita.com 公式Github github.com

Rails - テーブルにカラムを追加する

rails g migration add_<カラム名>_to_<テーブル名> <カラム名>:<カラムの型>具体例 rails g migration add_password_digest_to_users password_digest:string

N+1問題とは

N+1問題とは、必要以上にSQLクエリが発行され、その結果、速度低下に繋がりユーザビリティが悪くなる問題のこと。 N+1問題とか名前しらなかっただけで当たり前。 具体的には? 下記の記事を参照。 ruby-rails.hatenadiary.comもしくは、Rails ガイドの「13 …

Rails - delegateはなぜ必要なのか

delegateの基本的な使い方 基本的な使い方は公式ドキュメントか、日本語の場合はググればいっぱい出てきます。 https://api.rubyonrails.org/classes/Module.html#method-i-delegate なぜ必要か? オブジェクト指向の「デメテルの法則」(最小知識の原則)に反…

【Rails】あるモデルがどんなカラムを持っているかを確認する方法

rails c して、そのモデルの column_names メソッドを呼ぶ。 User.column_names # => ["id", "name", "email"]

Rails - Modelのスコープ(scope)とは

スコープとは何か? Railsガイドの「Active Record クエリインターフェイス」に「14 スコープ」がズバリ railsguides.jp もっと具体的に、実務での使い方を知りたい qiita.com なお、記事内で出てくるArel gemは、公式にRails本体にMergeされるのだそう。そ…