Sha256: bf2ff6c74d0e90af7cdefa1a7d13fa8e52f0ed6f3fb307c6a7407b125ab366cc
Contents?: true
Size: 783 Bytes
Versions: 3
Compression:
Stored size: 783 Bytes
Contents
module PunchingBag module ActiveRecord module ClassMethods def most_hit(since=nil, limit=5) query = self.scoped.joins(:punches).group(:punchable_type, :punchable_id) query = query.where('punches.average_time >= ?', since) unless since.nil? query.order('SUM(punches.hits) DESC').limit(limit) end end module InstanceMethods def hits(since=nil) self.punches.after(since).sum(:hits) end def punch(request=nil) PunchingBag.punch(self, request) end end end end class ActiveRecord::Base def self.acts_as_punchable extend PunchingBag::ActiveRecord::ClassMethods include PunchingBag::ActiveRecord::InstanceMethods has_many :punches, :as => :punchable end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
punching_bag-0.1.2 | lib/punching_bag/acts_as_punchable.rb |
punching_bag-0.1.1 | lib/punching_bag/acts_as_punchable.rb |
punching_bag-0.1.0 | lib/punching_bag/acts_as_punchable.rb |