はじめに
自分が最近Railsで、制作していて忘れそうなことをメモ感覚で残したものなので、
頭おかしいこと書いてあるかもしれないのでご了承ください。
STI(単一テーブル継承)
1つのテーブルを継承したクラスを作成することができる。
継承することによって、子クラスは親クラスと同じカラムを使うことができるので、似たようなクラスを作って増やしたいときに、カラムの定義を1つずつ行わなくてよくなるので、手間も少なくなるので便利です。カラムを追加することもできます。
※ 親クラスには、string型
のtype
をカラムとして追加することを忘れないように、気を付けましょう!
モデルの関連付けについて
1対1とか、1対多などの関係定義などを行うときに、いろんなファイル内に設定を書き込まないといけないので、結構大変です。
簡単に、こんな時にこう書く的なのをまとめます。
- 1対1のつながり(従属)
belongs_to
を従属するモデルに書く
- 1対1のつながり(含む、所有など)
has_one
を所有するモデルに書く
- 1対多のつながり
has_many
を所有するモデルに書く
- 従属する(マイグレーションファイル)
references :従属されるモデル(単数形)
を従属する側のモデルのマイグレーションファイルに書く
大体こんな感じだと思います。
Railsガイド- Active Recordの関連付け
バリデーションなど
よく使うやつと個人的に思うものをまとめます。
バリデーションで、データを確認することにより、保存したいデータのみを保存することができる。
presence
- 指定した値が空かどうかを確認
format
- 正規表現などを利用して、データの内容(文字など)を検証する
length
- 長さを検証
maximum
: 最大値を指定minimum
: 最小値を指定in
: 値の範囲を指定できる(以上、以下の指定ができる)is
: 等しくないといけないように指定できる
- 長さを検証
最後に
Railsで開発するときに、すごい悩まされたのがデータベース設計でした。今までは、本に書いてあることをそのまま作ればよいだけでしたが、自分で開発する際には、データベースのカラムに何が必要か、どんな制約を付けるか。などとても悩む部分が多かったです。でも、いろんなことにチャレンジすることはいつか自分のためになると思うので、皆さんも頑張ってください!!