Class: BlogCategory
- Inherits:
-
Object
- Object
- BlogCategory
- Includes:
- LuckySneaks::StringExtensions, Mongoid::Document, Mongoid::Timestamps, Mongoid::Tree
- Defined in:
- app/models/blog_category.rb
Class Method Summary collapse
-
.by_name(value) ⇒ Object
Class methods ==================================================================================.
- .by_slug(value) ⇒ Object
-
.children ⇒ Object
Class methods: Overrides =======================================================================.
- .roots ⇒ Object
- .roots_with_posts ⇒ Object
Instance Method Summary collapse
- #all_posts ⇒ Object
-
#children_with_posts ⇒ Object
Instance methods: Overrides ====================================================================.
-
#has_posts? ⇒ Boolean
Instance methods ===============================================================================.
- #parent_category=(name) ⇒ Object
- #parent_id=(value) ⇒ Object
- #posts ⇒ Object
- #subcategory? ⇒ Boolean
- #url ⇒ Object
Class Method Details
.by_name(value) ⇒ Object
Class methods ==================================================================================
28 29 30 |
# File 'app/models/blog_category.rb', line 28 def self.by_name value self.find :first, :conditions => {:name => value} end |
.by_slug(value) ⇒ Object
32 33 34 |
# File 'app/models/blog_category.rb', line 32 def self.by_slug value self.find :first, :conditions => {:slug => /^#{value}$/i} end |
.children ⇒ Object
Class methods: Overrides =======================================================================
19 20 21 |
# File 'app/models/blog_category.rb', line 19 def self.children super.asc :name end |
.roots ⇒ Object
23 24 25 |
# File 'app/models/blog_category.rb', line 23 def self.roots super.asc :name end |
.roots_with_posts ⇒ Object
36 37 38 |
# File 'app/models/blog_category.rb', line 36 def self.roots_with_posts self.roots.asc(:name).select{ |c| c.has_posts? } end |
Instance Method Details
#all_posts ⇒ Object
61 62 63 |
# File 'app/models/blog_category.rb', line 61 def all_posts (self.posts + self.children.map{ |c| c.posts }).uniq.flatten end |
#children_with_posts ⇒ Object
Instance methods: Overrides ====================================================================
41 42 43 |
# File 'app/models/blog_category.rb', line 41 def children_with_posts self.children.asc(:name).select{ |c| c.has_posts? } end |
#has_posts? ⇒ Boolean
Instance methods ===============================================================================
50 51 52 |
# File 'app/models/blog_category.rb', line 50 def has_posts? ! self.all_posts.blank? end |
#parent_category=(name) ⇒ Object
54 55 56 57 58 59 |
# File 'app/models/blog_category.rb', line 54 def parent_category=(name) unless name.blank? self.parent = BlogCategory.find_or_create_by :name => name self.save end end |
#parent_id=(value) ⇒ Object
45 46 47 |
# File 'app/models/blog_category.rb', line 45 def parent_id= value self[:parent_id] = value == 'nil' ? nil : value end |
#posts ⇒ Object
65 66 67 |
# File 'app/models/blog_category.rb', line 65 def posts Blog.first.posts.select{ |p| p.blog_category_ids.include? self.id } end |
#subcategory? ⇒ Boolean
69 70 71 |
# File 'app/models/blog_category.rb', line 69 def subcategory? ! self.root? end |
#url ⇒ Object
73 74 75 |
# File 'app/models/blog_category.rb', line 73 def url "#{Blog.first.path}topics/#{self.slug}" end |