Sha256: d8ed378c62325a565a934db418b72336651704bbd3db91b59d9d9f297ea13b45
Contents?: true
Size: 1.34 KB
Versions: 2
Compression:
Stored size: 1.34 KB
Contents
class Tag < ActiveRecord::Base has_many :taggings, dependent: :destroy, class_name: 'ActsAsTaggableOn::Tagging' validates :name, presence: true after_save :save_taggings after_destroy :save_taggings extend FriendlyId friendly_id :name searchable do text :name string :name time :created_at time :updated_at integer :bookmark_ids, multiple: true do tagged(Bookmark).compact.collect(&:id) end integer :taggings_count do taggings.size end end paginates_per 10 def self.bookmarked(bookmark_ids, options = {}) count = Tag.count count = Tag.default_per_page if count == 0 unless bookmark_ids.empty? tags = Tag.search do with(:bookmark_ids).any_of bookmark_ids order_by :taggings_count, :desc paginate(page: 1, per_page: count) end.results end end def save_taggings taggings.collect(&:taggable).each do |t| t.save end end def tagged(taggable_type) self.taggings.where(taggable_type: taggable_type.to_s).includes(:taggable).collect(&:taggable) end end # == Schema Information # # Table name: tags # # id :integer not null, primary key # name :string # name_transcription :string # created_at :datetime # updated_at :datetime # taggings_count :integer default(0) #
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
enju_bookmark-0.3.0 | app/models/tag.rb |
enju_bookmark-0.3.0.beta.1 | app/models/tag.rb |