Files
danbooru/app/models/saved_search.rb
2015-03-08 14:52:30 -04:00

41 lines
1.1 KiB
Ruby

class SavedSearch < ActiveRecord::Base
belongs_to :user
validates :tag_query, :presence => true
validate :validate_count
attr_accessible :tag_query, :category
before_create :update_user_on_create
after_destroy :update_user_on_destroy
validates_uniqueness_of :tag_query, :scope => :user_id
before_validation :normalize
def self.tagged(tags)
where(:tag_query => SavedSearch.normalize(tags)).first
end
def self.normalize(tag_query)
Tag.scan_query(tag_query).join(" ")
end
def normalize
self.tag_query = SavedSearch.normalize(tag_query)
end
def validate_count
if user.saved_searches.count + 1 > user.max_saved_searches
self.errors[:user] << "can only have up to #{user.max_saved_searches} " + "saved search".pluralize(user.max_saved_searches)
end
end
def update_user_on_create
if !user.has_saved_searches?
user.update_attribute(:has_saved_searches, true)
end
end
def update_user_on_destroy
if user.saved_searches.count == 0
user.update_attribute(:has_saved_searches, false)
end
end
end