-
Notifications
You must be signed in to change notification settings - Fork 2
/
tag.rb
32 lines (27 loc) · 817 Bytes
/
tag.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
require './database'
require './news'
class Tag < ActiveRecord::Base
has_and_belongs_to_many :news
def self.keywords_from_date(date, quantity)
date_begin = Date.strptime("#{date} -0300", '%Y-%m-%d %z')
date_end = date_begin + 1
Tag.keywords_between(date_begin, date_end, quantity)
end
def self.keywords_between(date_begin, date_end, quantity)
Tag
.select('news_tags.tag_id, count(news_tags.tag_id) as q, tags.name as name')
.joins(:news)
.where('date > ?', date_begin.to_time.to_i)
.where('date < ?', date_end.to_time.to_i)
.where('tags.blacklisted = 0')
.group(:tag_id)
.order('q DESC')
.limit(quantity)
end
def self.starting_with(value)
Tag
.where('name LIKE ?', "#{value}%")
.order('name')
.limit(20)
end
end