Sha256: c73f2cd79eaa5550c417e659ddd8f0b35a6115ffcea834bc5b3fa32ab1453a5c
Contents?: true
Size: 1.45 KB
Versions: 2
Compression:
Stored size: 1.45 KB
Contents
module CmPageBuilder::Rails class Page < ApplicationRecord belongs_to :container, polymorphic: true has_many :page_components, dependent: :destroy accepts_nested_attributes_for :page_components, allow_destroy: true def get_components self.page_components.select(:id, :component_type, :position, :content).map do |component| json_component = component.as_json.transform_keys! {|key| key.camelize(:lower)} attachment = component.component_attachment.attachment pp attachment json_component["component_attachment"] = if attachment { filename: attachment.filename.to_s, url: attachment.service_url } end json_component end end def save_content(component_json) components = JSON.parse component_json deleted_components = self.page_components.where.not( id: components.map {|c| c["id"] } ) deleted_components.delete_all components.each do |component| page_component = self.page_components.find_or_initialize_by(id: component["id"]) page_component.update!( content: component["content"], position: component["position"], component_type: component["componentType"] ) signed_id = component.dig("component_attachment", "signed_id") page_component.component_attachment = signed_id if signed_id page_component.save! end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
cm_page_builder-rails-0.1.2 | app/models/cm_page_builder/rails/page.rb |
cm_page_builder-rails-0.1.1 | app/models/cm_page_builder/rails/page.rb |