Class: Spree::Api::V3::BaseSerializer
- Inherits:
-
Object
- Object
- Spree::Api::V3::BaseSerializer
- 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
-
.money_attributes(*names) ⇒ Object
Declares money/display attributes that render
nullfor gated (prices_hidden) guests, keyed off the samehide_pricesflag 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.
Instance Method Summary collapse
- #current_currency ⇒ Object
- #current_locale ⇒ Object
-
#current_store ⇒ Object
Context accessors.
- #current_user ⇒ Object
-
#expand?(name) ⇒ Boolean
Check if an association should be expanded Supports dot notation: expand?('variants') matches both 'variants' and 'variants.media'.
- #expands ⇒ Object
-
#nested_expands_for(parent) ⇒ Object
Get nested expands for a given parent.
-
#nested_params(parent) ⇒ Object
Build nested params for child serializers with depth limit (max 4 levels).
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_currency ⇒ Object
35 36 37 |
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 35 def current_currency params[:currency] end |
#current_locale ⇒ Object
43 44 45 |
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 43 def current_locale params[:locale] end |
#current_store ⇒ Object
Context accessors
31 32 33 |
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 31 def current_store params[:store] end |
#current_user ⇒ Object
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'
53 54 55 56 |
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 53 def (name) name = name.to_s .any? { |e| e == name || e.start_with?("#{name}.") } end |
#expands ⇒ Object
47 48 49 |
# File 'app/serializers/spree/api/v3/base_serializer.rb', line 47 def @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 (parent) prefix = "#{parent}." .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 ? (parent) : [] params.merge(expand: nested, _expand_depth: depth + 1) end |