diff options
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/blog.rb | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/app/models/blog.rb b/app/models/blog.rb index 495c6eb..322a808 100644 --- a/app/models/blog.rb +++ b/app/models/blog.rb | |||
@@ -1,26 +1,26 @@ | |||
1 | class Blog < ApplicationRecord | 1 | class Blog < ApplicationRecord |
2 | has_many :records, as: :recordable, inverse_of: :recordable | 2 | has_many :records, as: :recordable, inverse_of: :recordable |
3 | 3 | ||
4 | validates :title, :body, presence: true | 4 | validates :title, presence: true |
5 | validates :slug, presence: true, format: /\A[-a-z0-9]+\z/ | 5 | validates :body, presence: true, if: :published |
6 | validates :slug, presence: true, format: /\A[-a-z0-9]+\z/, if: :published | ||
6 | 7 | ||
7 | accepts_nested_attributes_for :records, allow_destroy: true | 8 | accepts_nested_attributes_for :records, allow_destroy: true |
8 | 9 | ||
10 | before_validation :set_draft_title | ||
9 | before_save :set_published_at | 11 | before_save :set_published_at |
10 | 12 | ||
11 | def path | 13 | def path |
12 | "/says/#{slug}" | 14 | "/says/#{slug}" |
13 | end | 15 | end |
14 | 16 | ||
15 | def posted_at | 17 | private |
16 | if published | 18 | def set_draft_title |
17 | published_at | 19 | if self.title.blank? and not self.published |
18 | else | 20 | self.title = "Untitled draft" |
19 | updated_at | 21 | end |
20 | end | 22 | end |
21 | end | ||
22 | 23 | ||
23 | private | ||
24 | def set_published_at | 24 | def set_published_at |
25 | if self.published | 25 | if self.published |
26 | if self.published_at.blank? | 26 | if self.published_at.blank? |