app/models/landable/template.rb in landable-1.7.0 vs app/models/landable/template.rb in landable-1.7.1.rc1
- old
+ new
@@ -4,16 +4,41 @@
validates_presence_of :name, :slug, :description
validates_uniqueness_of :name, case_sensitive: false
validates_uniqueness_of :slug, case_sensitive: false
+
+ belongs_to :published_revision, class_name: 'Landable::TemplateRevision'
+ has_many :revisions, class_name: 'Landable::TemplateRevision'
+
+ before_save -> template {
+ template.is_publishable = true unless template.published_revision_id_changed?
+ }
+
def name= val
self[:name] = val
self[:slug] ||= (val && val.underscore.gsub(/[^\w_]/, '_').gsub(/_{2,}/, '_'))
end
def partial?
file.present?
+ end
+
+ def publish!(options)
+ transaction do
+ published_revision.unpublish! if published_revision
+ revision = revisions.create! options
+ update_attributes!(published_revision: revision, is_publishable: false)
+ end
+ end
+
+ def revert_to!(revision)
+ self.name = revision.name
+ self.body = revision.body
+ self.description = revision.description
+ self.slug = revision.slug
+
+ save!
end
class << self
def create_from_partials!
Partial.all.map(&:to_template)