Je veux renommer les colonnes timestamp défini dans l'horodateur.rb .
Peut les méthodes de timestamp.rb être écrasés? Et ce qui doit être fait dans la demande que le module avec l'écrasé de méthodes est utilisée.
source d'informationauteur Rainer Blessing
Il n'y a pas de moyen simple de le faire. Vous pouvez accomplir cela soit en remplaçant la ActiveRecord::Horodateur du module, ou en écrivant votre propre à faire de la magie pour vous.
Voici comment la magie fonctionne.
Cela peut être fait avec un peu plus de l'écriture de la ActiveRecord::Horodatage des méthodes de module. Pas réellement d'écraser l'ensemble du module. J'ai besoin pour accomplir ce même objectif, comme je travaille avec une base de données existante. Je suis sur des rails 3 et j'ai commencé à la suite d'une méthodologie de façon à monkey patch mon code avec le rapport à l'écriture rails de la fonctionnalité.
J'ai d'abord créer la base du projet que je suis en train de travailler avec et créer un fichier nommé que dans les initialiseurs. Dans ce cas, j'ai créé active_record.rb. Et dans le fichier j'ai mis le code pour remplacer deux méthodes qui contrôlait l'horodatage. Ci-dessous l'exemple de mon code:
REMARQUE: je tiens également à mentionner que ce genre de monkey patching pour obtenir des choses à travailler, c'est mal vu et peut se briser sur les mises à niveau afin d'être prudents et être pleinement conscient de ce que vous voulez faire.
Mises à jour:
Je pense que NPatel de la méthode est une bonne approche, mais est en fait trop dans le cas où vous avez seulement besoin de changer #created_at sur un modèle unique. Depuis l'Horodateur du module est inclus dans chaque AR objet, vous pouvez simplement le remplacer par le modèle, et non pas à l'échelle mondiale. Dire:
Juste pour info 🙂
Vous pouvez utiliser le beforesave et beforecreate méthodes de post DateTime.maintenant, à vos colonnes spécifiées.
rapide moche hack, de l'élaboration de Milan Novota réponse: ajouter la ligne suivante à l'environnement.rb, en remplaçant les valeurs de la CREATED_COL et UPDATED_COL constantes avec les noms de colonnes:
Ou vous pouvez simplement faire votre propre colonnes (DateTime) et il suffit de régler manuellement la colonne created_at lorsque vous créer et définir la updated_at colonne lorsque vous mettez à jour. Cela pourrait être plus facile que le hack ci-dessus. C'est ce que je vais faire. Mieux encore, la mise à jour des rails afin de nous permettre de changer ces noms.
Un sol'n qui n'utilise pas un singe patch; utiliser le
réversible
bloc lors de votre migration:La syntaxe correcte pour le faire dans les rails 4.2