Rails STI:禁止父类初始化

时间:2013-05-21 19:21:09

标签: ruby-on-rails single-table-inheritance activemodel

我有一个rails模型Book,其中包含STI继承的模型FictionNonFiction

虽然本书有很多共同逻辑,但我想禁止创建父Book模型。只是想知道在Rails中这样做的最优雅的方法 - 任何建议赞赏

2 个答案:

答案 0 :(得分:2)

您可能会在Book的初始化程序中引发错误

class Book
  def initialize *args
    raise "Can't create a Book" if self.class == Book
    super # if it's not the Book, proceed with ActiveRecord initialization
  end
end

答案 1 :(得分:2)

您可以将其设置为抽象:

class Book < ActiveRecord::Base
  self.abstract_class = true
  ...
end