2009-08-25 5 views
0

Existe-t-il un moyen de créer une colonne de numéro de série (SNO) via un échafaudage dans Rails qui augmente lors de l'ajout d'un enregistrement, diminue lors de la suppression d'un enregistrement et ne peut pas être modifié manuellement?Ajout d'une colonne SNO auto-incrémentée dans Rails Scaffolding?

+0

Qu'est-ce qu'une colonne SNO? –

+0

Colonne du numéro de série – Arc

Répondre

0

Si vous voulez créer une colonne de résumé sur un modèle, vous devrez mettre cette logique dans vos modèles. Il n'y a pas construit en méthode pour cela (comme un champ standard autoincrement), mais il peut être facilement ajouté:

class Parent << ActiveRecord::Base 
    # Contains a field: summary_field 
end 


class Child << ActiveRecord::Base 

    after_save => :increment_summary 
    before_destroy => :decrement_summary 

    def increment_summary 
     Parent.find(self.id).summary_field.increment 
    end 

    def decrement_summary 
     Parent.find(self.id).summary_field.decrement 
    end 

end 
1

On ne sait pas s'il y a une relation en cause, mais il semble que counter_cache peut être un bon en forme. Un Railscast episode fournit les exemples de code et un didacticiel vidéo.

Questions connexes