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
Вопрос
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