Open ericpeters0n opened 11 years ago
Solved! See above.
Good to hear you solved it. Please close this issue :)
Found another instance of this, even using the correct syntax...
class Link < ActiveRecord::Base
belongs_to :folder
belongs_to :user
has_reputation :avg_rating,
:source => :user,
:aggregated_by => :average,
:source_of => [{ :reputation => :karma, :of => :folder },
{ :reputation => :karma, :of => :user }]
has_reputation :views,
:source => :user,
:source_of => [{ :reputation => :link_views, :of => :folder }]
has_reputation :karma,
:source => [{ :reputation => :avg_rating },
{ :reputation => :views }],
:aggregated_by => :product,
:source_of => [{ :reputation => :karma, :of => :user },
{ :reputation => :karma, :of => :folder }]
Relevant portion of the stack trace:
TypeError: Array can't be coerced into Float
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:87:in `*'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:87:in `update_reputation_value_with_updated_source'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:163:in `update_reputation_value'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:151:in `send_reputation_message_to_receiver'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:140:in `block (2 levels) in propagate_updated_reputation_value'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:138:in `each'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:138:in `block in propagate_updated_reputation_value'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:136:in `each'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:136:in `propagate_updated_reputation_value'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:97:in `update_reputation_value_with_updated_source'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:163:in `update_reputation_value'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:151:in `send_reputation_message_to_receiver'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:140:in `block (2 levels) in propagate_updated_reputation_value'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:138:in `each'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:138:in `block in propagate_updated_reputation_value'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:136:in `each'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:136:in `propagate_updated_reputation_value'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/models/reputation.rb:97:in `update_reputation_value_with_updated_source'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/evaluation_methods.rb:66:in `update_evaluation'
from /Users/Eric/.rvm/gems/ruby-1.9.2-p320@linksee_demo/gems/activerecord-reputation-system-2.0.2/lib/reputation_system/evaluation_methods.rb:72:in `add_or_update_evaluation'
...which seems to suggest that it's in the propagation of the updated evaluation into the dependent (source_of) models that the problems arise.
So here those are:
class Folder < ActiveRecord::Base
belongs_to :owner, :class_name => "User"
has_many :links, :order => 'created_at DESC'
has_reputation :link_views,
:source => [{ :reputation => :views, :of => :links }]
has_reputation :karma,
:source => [{ :reputation => :avg_rating, :of => :links }],
:source_of => [{ :reputation => :karma, :of => :owner }]
class User < ActiveRecord::Base
has_many :folders, :foreign_key => :owner_id
has_many :links
has_reputation :karma,
:source => [{ :reputation => :karma, :of => :links }],
:aggregated_by => :sum
Confirmation (from somebody totally different... simply executing the tutorial code...) here: http://www.neilmarion.com/index.php/twitter-activerecord-reputation-system-the-dreaded-array-cant-be-coerced-into-float-error/
SHORTENED FOR BREVITY: Basically, this error can occur if the reputation model is defined using invalid syntax...
HOWEVER, It can also apparently occur when syntax is kosher according to the Github docs.