アチーブメントシステムの実装に関するスレッド( 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