Я пытаюсь следовать вместе с веткой о реализации системы достижений (находится по адресу Как реализовать систему достижений в RoR ), и я сталкиваюсь с TypeError, когда объект сохраняется и метод награжден? вызывается. Ошибка выглядит так:
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?'
Логика модели точно такая, как определено в предыдущем вопросе:
def awarded?(achievement)
achievements.count(:conditions => { :type => achievement }) > 0
end
Есть идеи, что здесь происходит?
UPDATE:
Основываясь на приведенной ниже информации, я закончил тем, что удалил абстракцию и разместил методы вознаграждения прямо в каждом контроллере. Не очень СУХОЙ, и когда у меня будет время поэкспериментировать с этим, я попытаюсь снова абстрагироваться, но пока работает. Пример:
if @user.achievements.count(:conditions => { :type => "CommentAchievement" }) < 1 and @comments > 1000
@user.achievements << CommentAchievement.new(:group_id => @group)
end