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


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