Sha256: f700666595a596a2af86fa6ca76ed4f8a0e337d3c30fdf41c619aff37b32667b

Contents?: true

Size: 1.6 KB

Versions: 9

Compression:

Stored size: 1.6 KB

Contents

class Spree::Base < ApplicationRecord
  include Spree::Preferences::Preferable
  if Rails::VERSION::STRING >= '7.1.0'
    serialize :preferences, type: Hash, coder: YAML
  else
    serialize :preferences, Hash
  end

  include Spree::RansackableAttributes
  include Spree::TranslatableResourceScopes

  after_initialize do
    if has_attribute?(:preferences) && !preferences.nil?
      self.preferences = default_preferences.merge(preferences)
    end
  end

  if Kaminari.config.page_method_name != :page
    def self.page(num)
      send Kaminari.config.page_method_name, num
    end
  end

  self.abstract_class = true

  def self.belongs_to_required_by_default
    false
  end

  def self.for_store(store)
    plural_model_name = model_name.plural.gsub(/spree_/, '').to_sym

    if store.respond_to?(plural_model_name)
      store.send(plural_model_name)
    else
      self
    end
  end

  def self.spree_base_scopes
    where(nil)
  end

  def self.spree_base_uniqueness_scope
    ApplicationRecord.try(:spree_base_uniqueness_scope) || []
  end

  # FIXME: https://github.com/rails/rails/issues/40943
  def self.has_many_inversing
    false
  end

  def self.json_api_columns
    column_names.reject { |c| c.match(/_id$|id|preferences|(.*)password|(.*)token|(.*)api_key/) }
  end

  def self.json_api_permitted_attributes
    skipped_attributes = %w[id]

    if included_modules.include?(CollectiveIdea::Acts::NestedSet::Model)
      skipped_attributes.push('lft', 'rgt', 'depth')
    end

    column_names.reject { |c| skipped_attributes.include?(c.to_s) }
  end

  def self.json_api_type
    to_s.demodulize.underscore
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
spree_core-4.10.1 app/models/spree/base.rb
spree_core-4.10.0 app/models/spree/base.rb
spree_core-4.9.0 app/models/spree/base.rb
spree_core-4.8.3 app/models/spree/base.rb
spree_core-4.8.2 app/models/spree/base.rb
spree_core-4.7.3 app/models/spree/base.rb
spree_core-4.7.2 app/models/spree/base.rb
spree_core-4.7.1 app/models/spree/base.rb
spree_core-4.7.0 app/models/spree/base.rb