2010-01-05 3 views
1

Je voudrais avoir une super-classe commune pour deux modèles en ruby, pour partager plusieurs méthodes. Disons que je veux un Truck et Car héritant de Vehicle. Voici quelques options:insertion de superclasse dans les rails, sans table de base de données correspondante

  1. Faire class Vehicle < ActiveRecord::Base, et ont class Truck < Vehicle etc. Mais j'obtiens des erreurs disant que je n'ai pas une table pour Vehicle (et je ne veux pas, non plus).

  2. Utilisez module Vehicle et include Vehicle dans class Truck < ActiveRecord::Base. Mais alors attr_reader et les amis ne sont pas appliqués à Truck.

Ainsi, je veux class Vehicle. Comment est-ce que je fais cela sans avoir besoin d'une table? Je suis sûr qu'il ya une norme, belle façon de le faire ...

Répondre

4

Ajouter une méthode de classe appelé abstract_class? qui retourne true:

class Vehicle < ActiveRecord::Base 
    def self.abstract_class? 
    true 
    end 
end 
+0

Ah, parfait, je savais que cela devait avoir un propre Solution. Merci! – Peter

Questions connexes