J'essaie de suivre le processus d'implémentation d'un système de réalisation (situé au How to implement an achievement system in RoR). Je suis en train de courir dans une erreur de type lorsque l'objet est sauvegardé et que la méthode est attribuée. est appelé. L'erreur ressemble:TypeError lors de la tentative d'utilisation d'observateurs et de STI
TypeError (can't dump anonymous class Class):
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/yaml/rubytypes.rb:6:in `to_yaml'
app/models/user.rb:18:in `awarded?'
La logique du modèle est exactement tel que défini dans cette question précédente:
def awarded?(achievement)
achievements.count(:conditions => { :type => achievement }) > 0
end
Toute idée de ce qui se passe ici?
MISE À JOUR: D'après les informations ci-dessous, je fini par enlever l'abstraction et de placer les méthodes d'attribution directement dans chaque contrôleur pour l'instant. Pas très sec et quand j'ai le temps de jouer avec ça, je vais essayer de l'extraire à nouveau, mais ça marche pour le moment. Un exemple:
if @user.achievements.count(:conditions => { :type => "CommentAchievement" }) < 1 and @comments > 1000
@user.achievements << CommentAchievement.new(:group_id => @group)
end