Class: Effective::Post

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
app/models/effective/post.rb

Instance Method Summary collapse

Instance Method Details

#approved?Boolean

Returns:

  • (Boolean)


71
72
73
# File 'app/models/effective/post.rb', line 71

def approved?
  draft == false
end

#bodyObject



79
80
81
# File 'app/models/effective/post.rb', line 79

def body
  region(:body).content
end

#body=(input) ⇒ Object



83
84
85
# File 'app/models/effective/post.rb', line 83

def body=(input)
  region(:body).content = input
end

#duplicate!Object

Returns a duplicated post object, or throws an exception



101
102
103
104
105
106
107
108
109
110
111
112
# File 'app/models/effective/post.rb', line 101

def duplicate!
  Post.new(attributes.except('id', 'updated_at', 'created_at')).tap do |post|
    post.title = post.title + ' (Copy)'
    post.draft = true

    regions.each do |region|
      post.regions.build(region.attributes.except('id', 'updated_at', 'created_at'))
    end

    post.save!
  end
end

#event?Boolean

Returns:

  • (Boolean)


75
76
77
# File 'app/models/effective/post.rb', line 75

def event?
  category == 'events'
end

#published?Boolean

Returns:

  • (Boolean)


67
68
69
# File 'app/models/effective/post.rb', line 67

def published?
  !draft? && published_at < Time.zone.now
end

#send_post_submitted_to_admin!Object



96
97
98
# File 'app/models/effective/post.rb', line 96

def 
  send_email(:post_submitted_to_admin, to_param)
end

#time_to_read_in_seconds(reading_speed = 3.333) ⇒ Object

3.333 words/second is the default reading speed.



92
93
94
# File 'app/models/effective/post.rb', line 92

def time_to_read_in_seconds(reading_speed = 3.333)
  (regions.to_a.sum { |region| (region.content || '').scan(/\w+/).size } / reading_speed).seconds
end

#to_paramObject



87
88
89
# File 'app/models/effective/post.rb', line 87

def to_param
  "#{id}-#{title.parameterize}"
end

#to_sObject



63
64
65
# File 'app/models/effective/post.rb', line 63

def to_s
  title.presence || 'New Post'
end