LoginSignup
7
5

More than 5 years have passed since last update.

Railsでtypeが予約後でエラーでたからついでにActiveRecordの規約調べてみた。(ActiveRecord::SubclassNotFound: Invalid single-table inheritance type)

Posted at

Railsで以下のエラー

ActiveRecord::SubclassNotFound: Invalid single-table inheritance type

結果

type は予約後でした。。。

ついでに(ActiveRecord命名規約とスキーマ規約)

命名規約

モデルクラス

キャメルケース(PostAuthor)

テーブル、スキーマ

スネークケース(post_author)

スキーマ規約

外部キー

(単数形テーブル名)_id(例: item_id、order_id)

主キー

デフォルトでは自動生成されるid
変更もできる。

migration_file
def change
  create_table :author, id: false do |t|
  ...  
end
model
self.primary_key = :name

created_at

作成時に現在の日時を取得して登録

updated_at

更新時に現在の日時を取得して登録・更新

lock_version

楽観的ロックをかける
(ユーザAとユーザBが編集画面を開いていて、ユーザAが先に更新していた場合、ユーザBの更新は失敗する。)

type

単一テーブル継承
(同じような機能のテーブルは1つのテーブルで実現しよう、それでtypeを使って分類すればいいよねってやつ)

(関連名)_type

ポリモーフィック関連
(違う親を持つけど、どっちもあるテーブルこれを使ってるって場合!例えば、companyとuserで同じimageテーブルを使うとか...typeでcompany_idを指すか、user_idを指すかを決めようねってやつ)

(テーブル名)_count

関連付けられたオブジェクトの数をキャッシュ。

参考

Activeレコードの基本 | Rails日本語ドキュメント | Ruby STUDIO
http://ruby.studio-kingdom.com/rails/guides/active_record_basics
Rails4 - Railsで規約に沿わない古いデータを扱う - Qiita
http://qiita.com/k-shogo/items/884498ad512c0e6eb303
ActiveRecordによる楽観的ロック | Ruby on Rails 備忘録 - Ride On Rails
http://rubyonrails.gachinko.org/3-2/lock_optimistically/
【Rails】ActiveRecord:単一テーブル継承(sti)とポリモーフィック関連を未だにぱっと思い出せないのでまとめ。 - 記すに足らず。
http://shirusu-ni-tarazu.hatenablog.jp/entry/2012/11/04/173742

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5