Вопрос

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