You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

34 lines
897 B

class Asset < ApplicationRecord
STICKER = 'Sticker'
has_one_attached :file
include PgSearch::Model
pg_search_scope :pg_search,
against: [:title, :tags],
associated_against: {
file_blob: [:filename, :content_type]
},
using: {
tsearch: { prefix: true }
}
before_validation :remove_empty_tags
scope :stickets, ->() { where("tags @> ?", "{#{STICKER}}") }
scope :by_last_modified, ->(rev) { order(updated_at: rev ? :asc : :desc, id: rev ? :desc : :asc) }
scope :by_filename, ->(rev) { order(title: rev ? :desc : :asc) }
scope :simple_search, ->(q) { pg_search(q) unless q.blank? }
private
def remove_empty_tags
%w"tags".map do |k|
self.send "#{k}=", self.send(k).reject { |v| v.blank? } unless self.send(k).blank?
end
end
end