Class: Spree::Api::V3::BaseSerializer

Inherits:
Object
  • Object
show all
Includes:
Alba::Resource, Typelizer::DSL
Defined in:
app/serializers/spree/api/v3/base_serializer.rb

Direct Known Subclasses

AddressSerializer, Admin::AdjustmentSerializer, Admin::AdminUserSerializer, Admin::AllowedOriginSerializer, Admin::ApiKeySerializer, Admin::CouponCodeSerializer, Admin::CustomFieldDefinitionSerializer, Admin::CustomerGroupSerializer, Admin::ImportMappingSerializer, Admin::InvitationSerializer, Admin::PriceListSerializer, Admin::PriceRuleSerializer, Admin::PromotionActionSerializer, Admin::PromotionRuleSerializer, Admin::RoleSerializer, Admin::StockTransferSerializer, Admin::StoreCreditCategorySerializer, Admin::StoreSerializer, Admin::TaxCategorySerializer, Admin::WebhookDeliverySerializer, Admin::WebhookEndpointSerializer, AssetSerializer, CartSerializer, CategorySerializer, ChannelSerializer, CreditCardSerializer, CustomFieldSerializer, CustomerReturnSerializer, CustomerSerializer, DeliveryMethodSerializer, DeliveryRateSerializer, DigitalLinkSerializer, DigitalSerializer, DiscountSerializer, ExportSerializer, FulfillmentSerializer, GiftCardBatchSerializer, GiftCardSerializer, ImportRowSerializer, ImportSerializer, InvitationSerializer, LineItemSerializer, MarketSerializer, MediaSerializer, NewsletterSubscriberSerializer, OptionTypeSerializer, OptionValueSerializer, OrderSerializer, PaymentMethodSerializer, PaymentSerializer, PaymentSessionSerializer, PaymentSetupSessionSerializer, PaymentSourceSerializer, PolicySerializer, PriceHistorySerializer, PriceSerializer, ProductFilterAvailabilityOptionSerializer, ProductFilterAvailabilitySerializer, ProductFilterCategoryOptionSerializer, ProductFilterCategorySerializer, ProductFilterOptionSerializer, ProductFilterOptionValueSerializer, ProductFilterPriceRangeSerializer, ProductFilterSortOptionSerializer, ProductFiltersSerializer, ProductPublicationSerializer, ProductSerializer, PromotionSerializer, RefundSerializer, ReimbursementSerializer, ReportSerializer, ReturnAuthorizationSerializer, ReturnItemSerializer, ShippingCategorySerializer, StockItemSerializer, StockLocationSerializer, StockMovementSerializer, StockReservationSerializer, StockTransferSerializer, StoreCreditSerializer, TaxCategorySerializer, VariantSerializer, WishlistItemSerializer, WishlistSerializer

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.money_attributes(*names) ⇒ Object

Declares money/display attributes that render null for gated (prices_hidden) guests, keyed off the same hide_prices flag the +price_for+/+price_in+ helpers use — so the whole price surface (product prices AND cart/order/line-item totals) is gated from one place instead of per-attribute opt-in.



24
25
26
27
28
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 24

def self.money_attributes(*names)
  names.each do |name|
    attribute(name) { |object| object.public_send(name) unless params[:hide_prices] }
  end
end

Instance Method Details

#current_currencyObject



35
36
37
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 35

def current_currency
  params[:currency]
end

#current_localeObject



43
44
45
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 43

def current_locale
  params[:locale]
end

#current_storeObject

Context accessors



31
32
33
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 31

def current_store
  params[:store]
end

#current_userObject



39
40
41
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 39

def current_user
  params[:user]
end

#expand?(name) ⇒ Boolean

Check if an association should be expanded Supports dot notation: expand?('variants') matches both 'variants' and 'variants.media'

Returns:

  • (Boolean)


53
54
55
56
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 53

def expand?(name)
  name = name.to_s
  expands.any? { |e| e == name || e.start_with?("#{name}.") }
end

#expandsObject



47
48
49
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 47

def expands
  @expands ||= Array(params[:expand] || [])
end

#nested_expands_for(parent) ⇒ Object

Get nested expands for a given parent



59
60
61
62
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 59

def nested_expands_for(parent)
  prefix = "#{parent}."
  expands.select { |i| i.start_with?(prefix) }.map { |i| i.sub(prefix, '') }
end

#nested_params(parent) ⇒ Object

Build nested params for child serializers with depth limit (max 4 levels)



65
66
67
68
69
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 65

def nested_params(parent)
  depth = params.fetch(:_expand_depth, 0)
  nested = depth < 4 ? nested_expands_for(parent) : []
  params.merge(expand: nested, _expand_depth: depth + 1)
end