Développeur Web RoR

Aller au contenu | Aller au menu | Aller à la recherche

Tag - activerecord

Fil des billets

mercredi 19 août 2015

Comment connaitre les changements qu'il y a eu sur un objet ActiveRecord immédiatement après un save ?


Avant de faire un save il est possible de connaitre les changements/savoir si un objet ActiveRecord a changé en appelant .changes ou changed?
Mais après un save ces fonctions renvoient respectivement [] et false. Il existe néanmoins la méthode previous_changes qui va renvoyer un hash avec la liste des attributes changés ainsi que leurs valeurs précédentes et actuelles.

dimanche 4 septembre 2011

Valium le gem qui allège votre CPU et votre mémoire lors d'une récupération limitée des champs d'un objet

Il arrive souvent que l'on ai besoin que de certains champs lors de la récupération d'objets sérialisés en base de données.

Par exemple imaginons que nous ayons 10000 utilisateurs (avec email, adresse, nom, prenom, ...) et que nous souhaitons afficher la liste de ce qui ce sont inscrit depuis 2 mois, seul l'email nom et prénom nous intéresse.

On pourrait faire ceci :

User.where("created_at > ?", 2.months.ago).each{ |u|

  # u est de la classe User

  print [u.name, u.firstname, u.email].join(" ")

}

Avec valium on peut faire ça (et on a intérêt) :

User.where("created_at > ?", 2.months.ago)[:email, :name, :firstname].each{ |u|

  # u est un array

  print [u[1], u[2], u[0]].join(" ")

}

Doc et source : https://github.com/ernie/valium#readme

La page des benchmarks est aussi intéressante (sachant qu'en plus les tests ont été fait avec ruby 1.9.3 et Rubyonrails 3.2)