2010-08-27 3 views
3

À l'heure actuelle, mes cours ressemblent à ceci. Je veux hériter l'enregistrement Activer dans une classe et que vouloir hériter de cette classe dans d'autres classes comme.Hériter active_record dans les rails

Je veux quelque chose comme ça.

class CommonActiveRecord < ActiveRecord::Base 

    def before_validation 
    set_blank_attributes_to_nil(@attributes) 
    end 

end 

class BalanceName < CommonActiveRecord 
    def before_validation 
     super 
    end 
end 

class Balance < CommonActiveRecord 
    def before_validation 
     super 
    end 
end 
+0

@phil Je veux créer une classe commune qui héritera ActiveRecord. Et mon autre classe héritera de cette classe commune. Dans le deuxième bloc de ma question, j'ai écrit un code que je veux quelque chose comme ça. –

Répondre

2

Vous pouvez faire exactement comme vous avez fait, sauf que vous n'avez pas besoin de redéfinir les méthodes before_validation dans vos sous-classes (bien que je suppose que ceux-ci peuvent être ici avant d'être rempli avec une validation plus spécifique).

Vous devrez également indiquer aux rails que votre CommonActiveRecord classe est abstraite et est donc pas persista en ajoutant:

class CommonActiveRecord < ActiveRecord::Base 
    self.abstract_class = true 
end 
0

Vous pouvez créer module (par exemple lib/common_active_record.rb):

module CommonActiveRecord 
    def before_validation 
    set_blank_attributes_to_nil(@attributes) 
    end 
end 

Et puis dans votre modèle comprennent simplement:

class BalanceName < ActiveRecord::Base 
    include CommonActiveRecord 
end 

class Balance < ActiveRecord::Base 
    include CommonActiveRecord 
end 
Questions connexes