モデルでカラムを serialize すると中にRubyの情報いれておけるので、やたら項目が多いときに便利
class User < ActiveRecord::Base
serialize :serialize_data # seriarize_data っていうとこにたくさんいれる。
# コンストラクタ
# serialize_dataを Hashにする
def initialize(*args)
super(*args)
self.serialize_data = {}
end
self::KOLUMNS = [:tall, :age, :weight]
# serialize_data でエンコード情報全てを管理する
# reader, writer を定義してフォームで扱い易くする
# serialize_data[フィールド名] としてデータが管理される
KOLUMNS.each do |kolumn|
# reader を定義
define_method kolumn do
self.serialize_data[kolumn]
end
# writer を定義
define_method "#{kolumn}=" do |obj|
self.serialize_data[kolumn] = obj
end
end
end
これで、何百とかこまごましたデータがあってもDBのカラム1つで全部管理できて気持ちいいー。SQL的な検索は出来ないので、検索したいカラムがあったら、その都度DBにカラムを追加していけばよいので、気軽。