English 中文(简体)
TypeError when trying to use observers and STI
原标题:

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
最佳回答

Not sure of the exact problem but it looks like whatever is being provided to the the method that is assigning the achievement is wrong, which is causing the value of type to be stored incorrectly. Check your database and make sure that the value being written to type is a subclass of your parent, and not the parent (or any other incorrect value).

If that value is stored incorrectly rails will not be able to instantiate an object, and it must look that value up before it attempts to create the object which is why its throwing that error.

问题回答

暂无回答




相关问题
rails collection_select vs. select

collection_select and select Rails helpers: Which one should I use? I can t see a difference in both ways. Both helpers take a collection and generates options tags inside a select tag. Is there a ...

SSL slowness in EC2

We ve deployed our rails app to EC2. In our setup, we have two proxies on small instances behind round-robin DNS. These run nginx load balancers for a dynamically growing and shrinking farm of web ...

Auth-code with A-Za-z0-9 to use in an URL parameter

As part of a web application I need an auth-code to pass as a URL parameter. I am currently using (in Rails) : Digest::SHA1.hexdigest((object_id + rand(255)).to_s) Which provides long strings like : ...

RubyCAS-Client question: Rails

I ve installed RubyCAS-Client version 2.1.0 as a plugin within a rails app. It s working, but I d like to remove the ?ticket= in the url. Is this possible?

activerecord has_many :through find with one sql call

I have a these 3 models: class User < ActiveRecord::Base has_many :permissions, :dependent => :destroy has_many :roles, :through => :permissions end class Permission < ActiveRecord::...

Ordering a hash to xml: Rails

I m building an xml document from a hash. The xml attributes need to be in order. How can this be accomplished? hash.to_xml

Text Editor for Ruby-on-Rails

guys which text editor is good for Rubyonrails? i m using Windows and i was using E-Texteditor but its not free n its expired now can anyone plese tell me any free texteditor? n which one is best an ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...

热门标签