I have a rails model Book, with STI-inherited models Fiction and NonFiction

While book holds a lot of common logic, I'd like to forbid creation of the parent Book model. Just wondering about the most elegant method for doing that in Rails - any suggestions appreciated

有帮助吗?

解决方案 2

You could raise error in Book's initializer

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

其他提示

You can set it abstract:

class Book < ActiveRecord::Base
  self.abstract_class = true
  ...
end
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top