Rails内置的STI

有两个类:

class Apple < ActiveRecord::Base
  def name
    p self.name
  end
end

class Fruit < AcitveRecord::Base      
  def name
    p self.name
  end
end

很明显,这个两个类是继承关系,设计表的时候不太可能建apples和fruits两个表。
此时,需要应用Rails内置的STI机制来简化设计:

新建一个表fruits,在表中加一个字段“type”,这样,在model只需这么设计:

class Fruit < ActiveRecord::Base
  def name
    p self.name
  end
end

class Apple < Fruit
end

Apple.new.name

在数据库中只有一个表fruits,如果Apple.create,fruits表新加一条记录,此时,这条记录的“type”值为“Apple”。

Kungs 15 October 2012
blog comments powered by Disqus