rest_framework 0.7.9 → 0.7.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f6a9bc78fae632a2c86426c523fbce432cb85904ea661219032d6e4352ab16ea
4
- data.tar.gz: f202cd11931c54fada9e8dd1e3af1dd9344b2a883dd5cb00ebf45708afdd365c
3
+ metadata.gz: 7bd88c76d9f83658ca09087b8931cec7ea569b4df5675c4ae8e21045dedf8ab2
4
+ data.tar.gz: 72d0a0a1f8bc086fbd69713d825ed0aedc93540ab1d114d0843cb5e99aca6696
5
5
  SHA512:
6
- metadata.gz: 8759e8295bb59715cd8aab800bd6a158a17422bee4adea2fc5d77c8517d44a92b6ff4a771a2c10a021162f5c582b4853a9d1ebd2bb5cc4e29468f3a6b061460b
7
- data.tar.gz: 46e0b4693c1166e774f00a25f0f9378f2702e0449f87b2e808ea16d395b1df98ae5e564fff198daf53b6d3e0ba3352a12232a2a7f6962a74ea578b0f9a77c09d
6
+ metadata.gz: b58f0e75004fc57e10366ecdd681a1729c88280514a71023585a49690ded6ee3a7947c9271f212b012412581ac62e3d294a2d955eda833e8b5dcce71bb0410ca
7
+ data.tar.gz: 20022bf8d6171d37f118693ccc50e419a885a17e7d8455833b3399387cbeb534c3e19834110b797aca0066f40d6fba0bf765b0aee4644b4a55b75ed4fa7cf9d4
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.9
1
+ 0.7.11
@@ -50,6 +50,7 @@ module RESTFramework::BaseModelControllerMixin
50
50
  # Options for association assignment.
51
51
  permit_id_assignment: true,
52
52
  permit_nested_attributes_assignment: true,
53
+ allow_all_nested_attributes: false,
53
54
 
54
55
  # Option for `recordset.create` vs `Model.create` behavior.
55
56
  create_from_recordset: true,
@@ -127,7 +128,7 @@ module RESTFramework::BaseModelControllerMixin
127
128
  config = self.field_config&.dig(f.to_sym) || {}
128
129
 
129
130
  # Default sub-fields if field is an association.
130
- if ref = self.get_model.reflections[f]
131
+ if ref = self.get_model.reflections[f.to_s]
131
132
  if ref.polymorphic?
132
133
  columns = {}
133
134
  else
@@ -218,7 +219,7 @@ module RESTFramework::BaseModelControllerMixin
218
219
  if self.permit_id_assignment
219
220
  if ref.collection?
220
221
  metadata[:id_field] = "#{f.singularize}_ids"
221
- else
222
+ elsif ref.belongs_to?
222
223
  metadata[:id_field] = "#{f}_id"
223
224
  end
224
225
  end
@@ -386,36 +387,43 @@ module RESTFramework::BaseModelControllerMixin
386
387
  # Get a list of parameters allowed for the current action. By default we do not fallback to
387
388
  # columns so arbitrary fields can be submitted if no fields are defined.
388
389
  def get_allowed_parameters
389
- return @allowed_parameters if defined?(@allowed_parameters)
390
+ return @_get_allowed_parameters if defined?(@_get_allowed_parameters)
390
391
 
391
- @allowed_parameters = self._get_specific_action_config(
392
+ @_get_allowed_parameters = self._get_specific_action_config(
392
393
  :allowed_action_parameters,
393
394
  :allowed_parameters,
394
395
  )
395
- return @allowed_parameters if @allowed_parameters
396
- return @allowed_parameters = nil unless fields = self.get_fields
396
+ return @_get_allowed_parameters if @_get_allowed_parameters
397
+ return @_get_allowed_parameters = nil unless fields = self.get_fields
397
398
 
398
399
  # For fields, automatically add `_id`/`_ids` and `_attributes` variations for associations.
399
- return @allowed_parameters = fields.map { |f|
400
+ id_variations = []
401
+ variations = {}
402
+ @_get_allowed_parameters = fields.map { |f|
400
403
  f = f.to_s
401
404
  next f unless ref = self.class.get_model.reflections[f]
402
405
 
403
- variations = [f]
404
-
405
406
  if self.class.permit_id_assignment
406
407
  if ref.collection?
407
- variations << "#{f.singularize}_ids"
408
- else
409
- variations << "#{f}_id"
408
+ variations["#{f.singularize}_ids"] = []
409
+ elsif ref.belongs_to?
410
+ id_variations << "#{f}_id"
410
411
  end
411
412
  end
412
413
 
413
414
  if self.class.permit_nested_attributes_assignment
414
- variations << "#{f}_attributes"
415
+ if self.class.allow_all_nested_attributes
416
+ variations["#{f}_attributes"] = {}
417
+ else
418
+ variations["#{f}_attributes"] = self.class.get_field_config(f)[:sub_fields]
419
+ end
415
420
  end
416
421
 
417
- next variations
422
+ next f
418
423
  }.flatten
424
+ @_get_allowed_parameters += id_variations
425
+ @_get_allowed_parameters << variations
426
+ return @_get_allowed_parameters
419
427
  end
420
428
 
421
429
  # Get the configured serializer class, or `NativeSerializer` as a default.
@@ -33,7 +33,7 @@ class RESTFramework::ModelFilter < RESTFramework::BaseFilter
33
33
  field, sub_field = match[1..2]
34
34
  next false unless field.in?(fields)
35
35
 
36
- sub_fields = @controller.class.get_field_config(field)[:sub_fields]
36
+ sub_fields = @controller.class.get_field_config(field)[:sub_fields] || []
37
37
  next sub_field.in?(sub_fields)
38
38
  end
39
39
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest_framework
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.9
4
+ version: 0.7.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gregory N. Schmit
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-20 00:00:00.000000000 Z
11
+ date: 2023-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -62,7 +62,7 @@ licenses:
62
62
  metadata:
63
63
  homepage_uri: https://rails-rest-framework.com
64
64
  source_code_uri: https://github.com/gregschmit/rails-rest-framework
65
- post_install_message:
65
+ post_install_message:
66
66
  rdoc_options: []
67
67
  require_paths:
68
68
  - lib
@@ -79,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
79
79
  version: '0'
80
80
  requirements: []
81
81
  rubygems_version: 3.2.33
82
- signing_key:
82
+ signing_key:
83
83
  specification_version: 4
84
84
  summary: A framework for DRY RESTful APIs in Ruby on Rails.
85
85
  test_files: []