40 lines
966 B
Ruby
40 lines
966 B
Ruby
# class Tag < ProtoTag
|
|
# belongs_to :module_app
|
|
|
|
# end
|
|
|
|
class Tag
|
|
include Mongoid::Document
|
|
include Mongoid::Timestamps
|
|
include Impressionist::Impressionable
|
|
|
|
is_impressionable :counter_cache => { :column_name => :view_count }
|
|
|
|
field :name, localize: true
|
|
field :cloud_view_count, type: Integer, default: 0
|
|
field :is_default, type: Boolean, default: false
|
|
field :view_count, type: Integer, default: 0
|
|
|
|
belongs_to :tag_lease, polymorphic: true
|
|
has_many :taggings, dependent: :destroy
|
|
|
|
validates :name, :at_least_one => true
|
|
|
|
before_destroy :destroy_module_tag, if: Proc.new { |tag| tag.tag_lease_type.eql?("ModuleTag") }
|
|
|
|
protected
|
|
|
|
def self.get_impressionist(item_tag = self)
|
|
item_tag.impressions.where(:created_at.gte=> 14.days.ago,:created_at.lte => Time.now).count
|
|
end
|
|
|
|
private
|
|
|
|
def destroy_module_tag
|
|
ModuleTag.without_callback(:destroy, :before, :destroy_tag) do
|
|
self.tag_lease.destroy
|
|
end
|
|
end
|
|
|
|
end
|