Bonjour les amis,

Pour un projet, j'ai besoin de faire en sorte qu'un attribut ne soit pas changé tout de suite mais plus tard, selon une date. Pour résoudre ce problème, j'ai pensé à deux solutions :

La première est de faire une délégation comme ceci :

class MyMainClass < ActiveRecord::Base
has_many :second_models

delegate :attribute, to: :second_model, allow_nil: true

def second_model
second_models.where("....").last
end
end

class SecondModel < ActiveRecord::Base
attr_accessor :attribute
end

Ça fonctionne sauf que le second modèle doit être sauvegardé dans la base de données pour que ça fonctionne étant donné qu'il y a une requête effectuée pour le retrouver. De plus, si je fait quelque chose comme ceci :

my_main_class.attribute = 1234
puts my_main_class_attribute

Ça ne renvoie la nouvelle valeur, mais l'ancienne étant donné que je n'ai pas fait de `save`. Évidement, je pourrais faire un `save` à chaque fois que je change un attribut, mais ce n’est vraiment pas efficace et je commence à trouver a trop compliqué pour rien. En plus, il faudrait que je créé un nouveau `SecondModel` pour chaque nouveau `MyMainClass`. Pfff...

Ma deuxième idée est de créer les deux mêmes modèles, mais de supprimer les relations entre `MyMainClass` et `SecondClass` et de faire une tâche qui passe tous les jours pour changer le champ `attribute`. Ça peut marcher, mais je trouve ça vraiment bizarre.

Connaissez-vous une gem qui pourraient faire ce que je veux faire? Je n'en ai pas trouvé. Avez-vous d'autres solutions à proposer?

Merci!

--
--
Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de 
Google Groups.
Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse 
railsfrance@googlegroups.com
Pour résilier votre abonnement envoyez un e-mail à l'adresse 
railsfrance-unsubscr...@googlegroups.com
--- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance.
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, 
envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com.
Pour plus d'options, visitez le site https://groups.google.com/groups/opt_out .

Répondre à