alba 3.7.2 → 3.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9bfe7db8f59dd13c0e93f69e1145d9d4fd6fd399b3ac03af5f3aaa4cab967e4
4
- data.tar.gz: f71ed1a8fc48d3f11db60cb08f1b3d38714732f5082092240485432a0f255c22
3
+ metadata.gz: c80fd2a93a15e978c608d4eb9fbe3abaab0f724674d84a3a177134df4664aa3e
4
+ data.tar.gz: 56b10e5d327f0dbffb3c9d1e82da6a97d318161e22e975c605784e03e184648f
5
5
  SHA512:
6
- metadata.gz: bf4d087dfde7c29caa9ffd7316c7bf1e877c5dc84e89495cf50e68bfd4956daa86e60d57f8bd63dea27d4ad1216f29eea572e5ed6b2d388ace3bcf4f79264968
7
- data.tar.gz: 31826991dc9ce74b265bd450de0991e9c93c7903df30da3d1d6542c3f3a931b54abfa74e78c75d59d39fa97a0bef083d070c40b9b8157f28cefaa6bd24e7a3da
6
+ metadata.gz: 2f53bf99dd9170696fc1b5860661b76cb6b2a3ca3803a6ddcced7e4c34ff38fe3d88fd3c6ac7f7b4cd2f6524d53fc6195039d6d6209bfcef770aabfe59d13ea0
7
+ data.tar.gz: fb028b2759d7892711baca807889a14d8bb11084d3d9fec2f3b6efd6e0cd199ee42f7ceb814e805fcf3ae9a4dccacedb3c6f810b951b500aaff24eb13bff5bbc
data/CHANGELOG.md CHANGED
@@ -6,6 +6,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [3.7.3] 2025-06-28
10
+
11
+ ### Fixed
12
+
13
+ - Enable to apply traits for associations [Issue #444](https://github.com/okuramasafumi/alba/issues/444)
14
+ - Thank you for reporting, @rainerborene
15
+
9
16
  ## [3.7.2] 2025-06-08
10
17
 
11
18
  ### Fixed
@@ -16,15 +16,17 @@ module Alba
16
16
  # @param condition [Proc, nil] a proc filtering data
17
17
  # @param resource [Class<Alba::Resource>, Proc, String, Symbol, nil]
18
18
  # a resource class for the association, a proc returning a resource class or a name of the resource
19
+ # @param with_traits [Symbol, Array<Symbol>, nil] specified traits
19
20
  # @param params [Hash] params override for the association
20
21
  # @param nesting [String] a namespace where source class is inferred with
21
22
  # @param key_transformation [Symbol] key transformation type
22
23
  # @param helper [Module] helper module to include
23
24
  # @param block [Block] used to define resource when resource arg is absent
24
- def initialize(name:, condition: nil, resource: nil, params: {}, nesting: nil, key_transformation: :none, helper: nil, &block)
25
+ def initialize(name:, condition: nil, resource: nil, with_traits: nil, params: {}, nesting: nil, key_transformation: :none, helper: nil, &block)
25
26
  @name = name
26
27
  @condition = condition
27
28
  @resource = resource
29
+ @with_traits = with_traits
28
30
  @params = params
29
31
  return if @resource
30
32
 
@@ -53,7 +55,7 @@ module Alba
53
55
  if @resource.is_a?(Proc)
54
56
  return to_h_with_each_resource(object, within, params) if object.is_a?(Enumerable)
55
57
 
56
- @resource.call(object).new(object, within: within, params: params).to_h
58
+ @resource.call(object).new(object, within: within, params: params, with_traits: @with_traits).to_h
57
59
  else
58
60
  to_h_with_constantize_resource(object, within, params)
59
61
  end
@@ -100,13 +102,13 @@ module Alba
100
102
 
101
103
  def to_h_with_each_resource(object, within, params)
102
104
  object.map do |item|
103
- @resource.call(item).new(item, within: within, params: params).to_h
105
+ @resource.call(item).new(item, within: within, params: params, with_traits: @with_traits).to_h
104
106
  end
105
107
  end
106
108
 
107
109
  def to_h_with_constantize_resource(object, within, params)
108
110
  @resource = constantize(@resource)
109
- @resource.new(object, params: params, within: within).to_h
111
+ @resource.new(object, params: params, within: within, with_traits: @with_traits).to_h
110
112
  end
111
113
  end
112
114
  end
data/lib/alba/resource.rb CHANGED
@@ -433,17 +433,20 @@ module Alba
433
433
  # @param resource [Class<Alba::Resource>, String, Proc, nil] representing resource for this association
434
434
  # @param serializer [Class<Alba::Resource>, String, Proc, nil] alias for `resource`
435
435
  # @param key [String, Symbol, nil] used as key when given
436
+ # @param with_traits [Symbol, Array<Symbol>, nil] specified traits
436
437
  # @param params [Hash] params override for the association
437
438
  # @param options [Hash<Symbol, Proc>]
438
439
  # @option options [Proc] if a condition to decide if this association should be serialized
439
440
  # @param block [Block]
440
441
  # @return [void]
441
442
  # @see Alba::Association#initialize
442
- def association(name, condition = nil, resource: nil, serializer: nil, key: nil, params: {}, **options, &block)
443
+ def association(name, condition = nil, resource: nil, serializer: nil, key: nil, with_traits: nil, params: {}, **options, &block)
443
444
  resource ||= serializer
444
445
  transformation = @_key_transformation_cascade ? @_transform_type : :none
445
446
  assoc = Association.new(
446
- name: name, condition: condition, resource: resource, params: params, nesting: nesting, key_transformation: transformation, helper: @_helper, &block
447
+ name: name, condition: condition, resource: resource, with_traits: with_traits,
448
+ params: params, nesting: nesting, key_transformation: transformation, helper: @_helper,
449
+ &block
447
450
  )
448
451
  @_attributes[key&.to_sym || name.to_sym] = options[:if] ? ConditionalAttribute.new(body: assoc, condition: options[:if]) : assoc
449
452
  end
data/lib/alba/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Alba
4
- VERSION = '3.7.2'
4
+ VERSION = '3.7.3'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: alba
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.7.2
4
+ version: 3.7.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - OKURA Masafumi