Skip to content

Commit 3e5796b

Browse files
committed
Merge devel
2 parents b76829a + 31afb96 commit 3e5796b

File tree

5 files changed

+25
-13
lines changed

5 files changed

+25
-13
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# Change Log
22

33
## [Unreleased]
4+
### Fixed
5+
- Records Display - Restrict record data serialization based the schema collection fields in the #show action.
46

57
## RELEASE 3.0.0-beta.12 - 2019-02-28
68
### Fixed
@@ -61,6 +63,10 @@
6163
### Changed
6264
- Schema - Developers can deactivate the automatic schema sending on server start (using `FOREST_DISABLE_AUTO_SCHEMA_APPLY` environment variable, deprecating `FOREST_DEACTIVATE_AUTOMATIC_APIMAP`).
6365

66+
## RELEASE 2.15.7 - 2019-02-28
67+
### Fixed
68+
- Records Display - Restrict record data serialization based the schema collection fields in the #show action.
69+
6470
## RELEASE 2.15.6 - 2019-02-28
6571
### Fixed
6672
- Records Display - Ensure that the data is properly sent even if an attribute serialization happens for an unknown reason.

app/controllers/forest_liana/resources_controller.rb

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ def show
8383
getter = ForestLiana::ResourceGetter.new(@resource, params)
8484
getter.perform
8585

86-
render serializer: nil, json:
87-
serialize_model(get_record(getter.record), include: includes(getter))
86+
render serializer: nil, json: render_record_jsonapi(getter)
8887
rescue => error
8988
FOREST_LOGGER.error "Record Show error: #{error}\n#{format_stacktrace(error)}"
9089
internal_server_error
@@ -189,6 +188,18 @@ def get_record record
189188
is_sti_model? ? record.becomes(@resource) : record
190189
end
191190

191+
def render_record_jsonapi getter
192+
collection_fields = getter.collection.fields.map { |field| field[:field] }
193+
fields_to_serialize = {
194+
ForestLiana.name_for(@resource) => collection_fields.join(',')
195+
}
196+
197+
serialize_model(get_record(getter.record), {
198+
include: includes(getter),
199+
fields: fields_to_serialize
200+
})
201+
end
202+
192203
def render_jsonapi getter
193204
records = getter.records.map { |record| get_record(record) }
194205
fields_to_serialize = fields_per_model(params[:fields], @resource)

app/services/forest_liana/resource_getter.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
module ForestLiana
22
class ResourceGetter < BaseGetter
33
attr_accessor :record
4+
attr_reader :collection
45

56
def initialize(resource, params)
67
@resource = resource

app/services/forest_liana/resources_getter.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ def includes_for_serialization
7070
private
7171

7272
def get_fields_to_serialize
73-
@params[:fields][@collection_name].split(',').map { |name| name.to_sym }
73+
if @params[:fields] && @params[:fields][@collection_name]
74+
@params[:fields][@collection_name].split(',').map { |name| name.to_sym }
75+
else
76+
[]
77+
end
7478
end
7579

7680
def get_segment

test/integration/navigation_test.rb

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)