Sha256: 06245e6dee157a0c2ac2183f84263f97a866ffe1fbbc974a2f1a8cdd57bf4985

Contents?: true

Size: 1.2 KB

Versions: 2

Compression:

Stored size: 1.2 KB

Contents

class SeoSnippet
  include ActiveModel::Model
  extend ActiveModel::Naming

  DEFAULT_PARAMS = {
    "corporate_contacts_attributes" => {"0" => {}},
    "label" => "seo_snippet",
    "context" => "http://schema.org",
    "type" => "Organization"
  }

  attr_accessor :label, :context, :type, :url, :logo, :facebook_url, :twitter_url, :google_plus_url,
    :instagram_url, :pinterest_url, :linkedin_url, :youtube_url, :corporate_contacts,
    :corporate_contacts_attributes

  validates :url, :context, :type, presence: true
  validates :label, presence: true,
           format: { with: /\A[^\s]+\z/, message: 'blanks'}

  def initialize(params={})
    params = DEFAULT_PARAMS.merge(params)
    super # calls (amongst other methods): corporate_contacts_attributes=(attrs)
  end

  def corporate_contacts_attributes=(attrs)
    self.corporate_contacts = attrs.values.map do |cc|
      CorporateContact.new(cc)
    end
  end

  def corporate_contacts_validator
    error_hash = {}
    @corporate_contacts.each do |contact|
      unless contact.valid?
        contact.errors.messages.each do |error_name, error_message|
          error_hash[error_name] = error_message.join
        end
      end
    end
    return error_hash
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
comfortable_mexican_loveseat-0.1.1 app/services/seo_snippet.rb
comfortable_mexican_loveseat-0.1.0 app/services/seo_snippet.rb