bekkou68 の日記

Gogengo! や IT 技術など。

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')