-
Notifications
You must be signed in to change notification settings - Fork 1
/
page.rb
45 lines (33 loc) · 1.04 KB
/
page.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
class Page < ActiveRecord::Base
include OrderByPosition
include UrlTitle
belongs_to :section, inverse_of: :pages
has_many :images, inverse_of: :page
validates :section_id, presence: true
validates :title, length: { maximum: 100 }
validates :text, length: { maximum: 10_000 }
validates :images_zoom_factor, presence: true, numericality: true, inclusion: { in: 1..2000 }
validates_url_title_unique scope: [:section_id]
after_initialize :set_title
before_create :set_top_position
after_commit :reprocess_images!, if: -> { previous_changes.key? :images_zoom_factor }
def can_be_deleted?
images.empty? && text.blank?
end
protected
def set_title
self.title ||= Date.today.year.to_s
end
def order_scope
section.try(:pages)
end
def reprocess_images!
images.map do |image|
Thread.new do
ActiveRecord::Base.connection_pool.with_connection do
image.reprocess_picture!
end
end
end.each(&:join)
end
end