読者です 読者をやめる 読者になる 読者になる

bekkou68の日記

開発しているサービス, IT技術, 英語など。

Rails で STI を使ったのでメモを残します

Ruby on Rails STI

はじめに

自分用メモです。

実装ダイジェスト

db/schema.rb
create_table "images", :force => true do |t|
  t.string "type" # ここに各モデルのタイプが入る ex. "PngImage", "JpegImage"
  t.string "path"
end
app/models/image.rb
class Image < ActiveRecord::Base
  # ex. belongs_to user とか
end
app/models/png_image.rb
class PngImage < Image
  # 個別の処理があれば
end
app/models/jpeg_image.rb
class JpegImage < Image
  # 個別の処理があれば
end
モデル作成
# これで type に 'PngImage' が入った Imageテーブルのカラムがつくられる
PngImage.create!(path: '/path/to/img')