Shame on me...
J'ai beaucoup de mal avec "self". Voici le code actuel sur lequel je bloques:
le self.save me renvoi une erreur "undefined method"
Ce que je ne comprends pas, c'est que le self.ants.empty? ne renvois pas d'erreur, mais si je fait un unless self.ants.empty? juste avant le raise (c'était juste pour essayer), ça me renvois une erreur...
J'ai d'abord penser que la désactivation de la mise en cache effacer en même temps le cache actuel donc perte de l'objet city en cours ou un truc du genre, mais même en désactivant la désactivation(wow), ça ne fonctionnes pas.
Shame on me? =(
EDIT: Shame on me!! Bordel je me hais sur ce coup là!! Je la laisse pour me faire maltraîter!
EDIT²: uncached do ne fonctionnes pas non plus dans le modèle:
EDIT³: voici ma fonction finale, si tu as encore des conseils à me donner:
L'histoire du calcul du temps si tu veut le savoir c'est:
Une fourmis met 8h à naître, donc si tu demandes à en créé 20 d'un coup, pour que ce soit un peu plus "rôle-play", j'ai limité la ponte à 1fourmis/6secondes.
Le problème avec un système pareil c'est que si tu cré 5fourmis et que de suite après l'envoi du formulaire tu redemandes 5fourmis, les temps vont se chevaucher, donc je dois vérifier s'il y a encore des fourmis en cours de ponte (si la naissance est prévu dans plus de 8h), et si c'est le cas, ajouter les fourmis du second envoi à la suite du premier.
Là ça fonctionnes impeccablement, juste cette histoire de uncached à laquelle je n'ai pas encore trouvé la réponse...
EDIT⁴: ActiveRecord::Base.uncached fonctionnes... bizarrement...
J'ai beaucoup de mal avec "self". Voici le code actuel sur lequel je bloques:
# Add few ants to the production queue.
def product_ants!(quantity)
@time_shift = 0
unless self.ants.empty?
@time_shift = self.ants.last.born - 8.hours.from_now if self.ants.last.born - 8.hours.from_now < 0
end
@quantity = quantity.to_i - 1
uncached do
0.upto(@quantity) do |i|
self.ants.build(ort => Ant::SeORTS[rand(3)],
:born => Time.now + i*Ant:RODUCTION_DURATION + @time_shift,
:name => Ant.next_name_for(self.user))
end
end
end
unless self.save
raise ArgumentError, "Error occured"
end
le self.save me renvoi une erreur "undefined method"
Ce que je ne comprends pas, c'est que le self.ants.empty? ne renvois pas d'erreur, mais si je fait un unless self.ants.empty? juste avant le raise (c'était juste pour essayer), ça me renvois une erreur...
Citation :undefined method `ants' for #<Class:0xa7e9fc8>
J'ai d'abord penser que la désactivation de la mise en cache effacer en même temps le cache actuel donc perte de l'objet city en cours ou un truc du genre, mais même en désactivant la désactivation(wow), ça ne fonctionnes pas.
Shame on me? =(
EDIT: Shame on me!! Bordel je me hais sur ce coup là!! Je la laisse pour me faire maltraîter!
EDIT²: uncached do ne fonctionnes pas non plus dans le modèle:
Citation :undefined method `uncached' for #<City:0xa48457c>
EDIT³: voici ma fonction finale, si tu as encore des conseils à me donner:
# Add few ants to the production queue.
def product_ants!(quantity)
@time_shift = 0
unless self.ants.empty?
@time_shift = self.ants.last.born - 8.hours.from_now + Ant:RODUCTION_DURATION if self.ants.last.born > 8.hours.from_now
end
@quantity = quantity.to_i - 1
ActiveRecord::Base.connection.disable_query_cache!
0.upto(@quantity) do |i|
self.ants.build(ort => Ant::SORTS[rand(3)],
:born => 8.hours.from_now + i*Ant:RODUCTION_DURATION + @time_shift,
:name => Ant.next_name_for(self.user))
end
ActiveRecord::Base.connection.enable_query_cache!
unless self.save
raise ArgumentError, "Error occured"
end
end
L'histoire du calcul du temps si tu veut le savoir c'est:
Une fourmis met 8h à naître, donc si tu demandes à en créé 20 d'un coup, pour que ce soit un peu plus "rôle-play", j'ai limité la ponte à 1fourmis/6secondes.
Le problème avec un système pareil c'est que si tu cré 5fourmis et que de suite après l'envoi du formulaire tu redemandes 5fourmis, les temps vont se chevaucher, donc je dois vérifier s'il y a encore des fourmis en cours de ponte (si la naissance est prévu dans plus de 8h), et si c'est le cas, ajouter les fourmis du second envoi à la suite du premier.
Là ça fonctionnes impeccablement, juste cette histoire de uncached à laquelle je n'ai pas encore trouvé la réponse...
EDIT⁴: ActiveRecord::Base.uncached fonctionnes... bizarrement...