I m trying to follow along with the thread on implementing an achievement system (located at How to implement an achievement system in RoR), and am running into a TypeError when the object is saved and the method awarded? gets called. The error looks like:
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?
The model logic is exactly as defined in that previous question:
def awarded?(achievement)
achievements.count(:conditions => { :type => achievement }) > 0
end
Any idea what s happening here?
UPDATE: Based on the info below, I ended up removing the abstraction and placing the award methods directly in each controller for now. Not very DRY and when I have time to play around with it more I ll try to abstract it out again, but works for now. An example:
if @user.achievements.count(:conditions => { :type => "CommentAchievement" }) < 1 and @comments > 1000
@user.achievements << CommentAchievement.new(:group_id => @group)
end