Model に Application を挟むと…2007年11月02日 13時52分47秒

Rails では、既にコントローラには空の ApplicationController が作られ、目的のコントローラはそれを継承する形で自動生成される。

% cat app/controllers/todo.rb
class TodoController < ApplicationController

end

それに引き替え、モデルはそうなっていない。Rails の ActiveRecord を継承する形になっている。


% cat app/models/todo.rb
class Todo < ActiveRecord::Base

end

同じ、似たようなデータベース処理を複数のデータベースで行なう場合は、是非、基幹クラスに関数として実装し、あちらこちらで使い回してみたくなる。ところが、モデルでそのような事を出来るといった記述が見つからない。しかし、出来ないとの情報もない。そこで、試した。


% cat app/models/todo.rb
class Todo < Application

end
% cat app/models/application.rb
class Application < ActiveRecord::Base

end


使えなかった。Todo.find などとやっても、Application というテーブルにデータを探しにいってしまう。違うテーブルに行なえる同一処理を、一つの基幹クラスの関数にする目論見はつい果てた。