Sha256: b2d673e822b86da4734bde98edfeee2fc8fe06b81cf42fec62e1d504e8f67b52

Contents?: true

Size: 952 Bytes

Versions: 4

Compression:

Stored size: 952 Bytes

Contents

# -*- encoding : utf-8 -*-
module LoyalCore
  class RatingTrack < ActiveRecord::Base
    attr_accessible :score

    # self.acts_as_tiny_cached

    self.loyal_core_acts_as_creator_able

    # TODO: counter_cache 是否需要?
    belongs_to :target, :polymorphic => true, :counter_cache => true

    # 保存之后需要 更新好评度,与差评度
    after_create do |r|
      if r.score > 0
        r.target_type.constantize.update_counters(r.target_id, :up_rating   => r.score)
      else
        r.target_type.constantize.update_counters(r.target_id, :down_rating => r.score)
      end
    end

    after_destroy do |r|
      if r.score > 0
        r.target_type.constantize.update_counters(r.target_id, :up_rating   => -(r.score))
      else
        r.target_type.constantize.update_counters(r.target_id, :down_rating => -(r.score))
      end
    end

    validates_uniqueness_of :created_by, :scope => [:target_id, :target_type]
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
loyal_core-0.0.11 app/models/loyal_core/rating_track.rb
loyal_core-0.0.10 app/models/loyal_core/rating_track.rb
loyal_core-0.0.8 app/models/loyal_core/rating_track.rb
loyal_core-0.0.7 app/models/loyal_core/rating_track.rb