※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

■チートシート: http://d.hatena.ne.jp/yshgt/20080629/1214720897

http://merblog.tt25.org/2008-12-14/merb-and-sequel-by-yellowpages-dot-com



■SingleTableInheritance(単一テーブル継承): http://markmail.org/message/bgy3uinkrlz2er2f


ActiveRecordのSTIは Sequelではポリモーフィックモデルと呼んでいる。 set_model を使ってカラム名 type でハッシュマップの値をclass に与えてデータセットを作る:

 dataset.set_model(:type, {1 => Person, 2 => Company})


 class Addressable < Sequel::Model(:addresses)
   dataset.set_row_filter {|v| eval(v[:type]).new(v)}
 end
 class Person < Addressable
 end
 class Company < Addressable
 end


これは、マクロでも出来る。

 class Sequel::Model
   def self.set_polymorphic(type_column = :type)
     dataset.set_row_filter {|v| eval(v[type_column]).new(v)}
   end
 end