ActiveRecord で VIEW を使うときの注意点

備忘録。ここでいう VIEW は DB で CREATE VIEW AS .. するあれです。ActionPack とは関係ないです。試したのはすべてSQLiteです。

  • とりあえずけっこう普通に使える。
    • 例えば CREATE VIEW AS calculated_results をすると、CalculatedResult クラスから普通に読める。
    • `id`問題(後述)は残るので
  • view をさらに include で JOIN しようとすると落ちる
    • `id`カラムがあるのを前提に t.id as t0_id とかいう SQL を発行するのでそんなカラムないよエラーになる。当然といえば当然。
    • そもそも view の identifier てなんなんだろうなぁ。
    • 実利面だけを考えれば、全レコード NULL のカラムを用意すればよろし。
  • rake db:schema:dump では抜けない
    • テストのときは config/environment.rb で下記を設定すること
 config.active_record.schema_format = :sql
  • migrate するときは migration ファイルでゴリッと書いてますが
 def self.up
   execute <<-SQL

   CREATE VIEW hoges AS
   SELECT
     ...

   SQL

今日のところはさしあたりこんなところで。