Class: Category
Class Method Summary
collapse
Instance Method Summary
collapse
#attributes_print, fuzzy_search, match_search, #match_search, sanitize_for_search, sanitize_name, sanitize_sql_in, useful_err_msg, with_lax_group_rules
Class Method Details
.by_id(id) ⇒ Object
41
42
43
44
45
46
|
# File 'app/models/category.rb', line 41
def self.by_id(id)
categories = Rails.cache.fetch 'categories/by_id' do
Category.all.to_h { |c| [c.id, c] }
end
categories[id]
end
|
.by_lowercase_name(name) ⇒ Object
34
35
36
37
38
39
|
# File 'app/models/category.rb', line 34
def self.by_lowercase_name(name)
categories = Rails.cache.fetch 'categories/by_lowercase_name' do
Category.all.to_h { |c| [c.name.downcase, c] }
end
categories[name]
end
|
Instance Method Details
#new_posts_for?(user) ⇒ Boolean
18
19
20
21
22
23
24
25
26
27
28
|
# File 'app/models/category.rb', line 18
def new_posts_for?(user)
key = "#{}/#{user.id}/#{id}/last_visit"
Rails.cache.fetch key, expires_in: 5.minutes do
Rack::MiniProfiler.step "Redis: category last visit (#{key})" do
activity_key = "#{}/#{id}/last_activity"
last_visit = RequestContext.redis.get(key)
last_activity = RequestContext.redis.get(activity_key) || DateTime.parse
last_visit.nil? || last_activity > DateTime.parse(last_visit)
end
end
end
|
#update_activity(last_activity) ⇒ Object
30
31
32
|
# File 'app/models/category.rb', line 30
def update_activity(last_activity)
RequestContext.redis.set("#{}/#{id}/last_activity", last_activity)
end
|