我正在尝试遵循实现成就系统的线程(位于如何在 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
知道这里发生了什么吗?
更新: 根据下面的信息,我最终删除了抽象并将奖励方法直接放在每个控制器中。不是很干,当我有时间更多地使用它时,我会尝试再次将它抽象出来,但现在可以了。一个例子:
if @user.achievements.count(:conditions => { :type => "CommentAchievement" }) < 1 and @comments > 1000
@user.achievements << CommentAchievement.new(:group_id => @group)
end