Class: Category

Inherits:
ApplicationRecord show all
Includes:
CommunityRelated
Defined in:
app/models/category.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from ApplicationRecord

#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

Returns:

  • (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 = "#{community_id}/#{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 = "#{community_id}/#{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("#{community_id}/#{id}/last_activity", last_activity)
end