added the methods, now raising a NotImplementedError when not overridden. Still, there is no easy way to prevent Reports::Report from being instantiated: There is .abstract_class=true in ActiveRecord, but this does not apply here -   so this should either be a model, that just gets included or it adds a check to the constructor, that makes sure that its actually a subclass of Report (add a lengthy discussion here, wether or not abstract classes are a good idea in ruby....)