Sha256: 2024c0149cdb5aee595aad2da2737566836409234f115ea1c084a7881b7ebf9f

Contents?: true

Size: 900 Bytes

Versions: 16

Compression:

Stored size: 900 Bytes

Contents

module Spree
  class DataFeed < Base
    belongs_to :store, class_name: 'Spree::Store', foreign_key: 'store_id'

    scope :for_store, ->(store) { where(store: store) }

    before_validation :generate_slug

    with_options presence: true do
      validates :store
      validates :name, uniqueness: true
      validates :slug, uniqueness: { scope: :store_id }
    end

    def formatted_url
      "#{store.formatted_url}/api/v2/data_feeds/#{self.class.provider_name}/#{slug}.rss"
    end

    private

    def generate_slug
      new_slug = slug.blank? ? SecureRandom.uuid : slug.parameterize
      write_attribute(:slug, new_slug)
    end

    class << self
      def label
        raise NotImplementedError
      end

      def provider_name
        raise NotImplementedError
      end

      def available_types
        Rails.application.config.spree.data_feed_types
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
spree_core-4.10.1 app/models/spree/data_feed.rb
spree_core-4.10.0 app/models/spree/data_feed.rb
spree_core-4.9.0 app/models/spree/data_feed.rb
spree_core-4.8.3 app/models/spree/data_feed.rb
spree_core-4.8.2 app/models/spree/data_feed.rb
spree_core-4.7.3 app/models/spree/data_feed.rb
spree_core-4.6.6 app/models/spree/data_feed.rb
spree_core-4.6.5 app/models/spree/data_feed.rb
spree_core-4.7.2 app/models/spree/data_feed.rb
spree_core-4.7.1 app/models/spree/data_feed.rb
spree_core-4.6.4 app/models/spree/data_feed.rb
spree_core-4.7.0 app/models/spree/data_feed.rb
spree_core-4.6.3 app/models/spree/data_feed.rb
spree_core-4.6.2 app/models/spree/data_feed.rb
spree_core-4.6.1 app/models/spree/data_feed.rb
spree_core-4.6.0 app/models/spree/data_feed.rb