Railsで以下のエラー
ActiveRecord::SubclassNotFound: Invalid single-table inheritance type
結果
type
は予約後でした。。。
ついでに(ActiveRecord命名規約とスキーマ規約)
命名規約
モデルクラス
キャメルケース(PostAuthor)
テーブル、スキーマ
スネークケース(post_author)
スキーマ規約
外部キー
(単数形テーブル名)_id(例: item_id、order_id)
主キー
デフォルトでは自動生成されるid
変更もできる。
def change
create_table :author, id: false do |t|
...
end
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