/
post.rb
54 lines (45 loc) · 1.2 KB
/
post.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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Post
include Mongoid::Document
include Mongoid::Slug
include Mongoid::MultiParameterAttributes
attr_accessor :post_tags
attr_accessible :title, :content, :post_tags
field :title
field :content
field :slug
field :published_on, :type => DateTime
field :tags, :type => Array
validates_presence_of :title, :content
embeds_many :comments, :dependent => :destroy
index :slug, unique:true
validates_uniqueness_of :title, :case_sensitive => false
before_save :set_published_on, :generate_slug, :generate_tags
slug :slug
has_and_belongs_to_many :users
#accepts_nested_attributes_for :comment
def get_tags
if self.tags
self.tags.inject{|tag_string,tag| tag_string + ", " + tag}
end
end
def authors
unless users.empty?
users.map{|user| user.nick_name}
.inject{|author_1,author_2| author_1 + ", " + author_2 }
else
"None"
end
end
private
def set_published_on
self.published_on = DateTime.now
end
def generate_slug
self.slug = self.title.downcase.gsub(/[^[:alnum:]]/,'-').gsub(/-{2,}/,'-')
end
def generate_tags
if post_tags
self.tags = post_tags.split(/,/).collect{ |tag| tag.strip }
end
end
end