neocities/models/tag.rb
2014-07-31 15:25:08 -07:00

25 lines
626 B
Ruby

class Tag < Sequel::Model
NAME_LENGTH_MAX = 25
NAME_WORDS_MAX = 1
many_to_many :sites
def before_create
super
values[:name].downcase!
end
def self.create_unless_exists(name)
dataset.filter(name: name).first || create(name: name)
end
def self.suggestions(name, limit=3)
Tag.filter(name: /^#{name}/).
order(:name).
limit(limit).
all
end
def self.popular_names(limit=10)
DB["select tags.name,count(*) as c from sites_tags inner join tags on tags.id=sites_tags.tag_id where tags.name != '' group by tags.name having count(*) > 1 order by c desc LIMIT ?", limit].all
end
end