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 .