Rails | 4月 20th, 2008
モデルでカラムを 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にカラムを追加していけばよいので、気軽。




