Module: JsonApiToolbox::Renderizable
- Defined in:
- lib/renderizable.rb
Instance Method Summary collapse
- #default_includes_params ⇒ Object
- #fields ⇒ Object
- #includes_params ⇒ Object
- #jsonapi_class ⇒ Object
- #permitted_params ⇒ Object
- #render_object(object, options = {}) ⇒ Object
Instance Method Details
#default_includes_params ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/renderizable.rb', line 34 def default_includes_params model_relationships = model_name.reflect_on_all_associations(:has_one).map(&:name) model_relationships += model_name.reflect_on_all_associations(:has_many).map(&:name) # This line exists to exclude from default_includes_params a relationship # with 'versions' (see gem paper_trail) model_relationships.delete(:versions) params.merge!(includes: model_relationships) end |
#fields ⇒ Object
20 21 22 23 24 25 26 |
# File 'lib/renderizable.rb', line 20 def fields return {} unless fields? params[:fields].permit!.to_h.transform_values do |attributes| attributes.split(',') end end |
#includes_params ⇒ Object
16 17 18 |
# File 'lib/renderizable.rb', line 16 def includes_params params.fetch(:includes, {}) end |
#jsonapi_class ⇒ Object
47 48 49 50 51 52 53 54 |
# File 'lib/renderizable.rb', line 47 def jsonapi_class version_hash = { 'PaperTrail::Version': JsonApiToolbox::Serializables:: SerializableVersion } Hash.new { |h, k| h[k] = "Serializable#{k}".safe_constantize }. merge(version_hash) end |
#permitted_params ⇒ Object
28 29 30 31 32 |
# File 'lib/renderizable.rb', line 28 def permitted_params model = controller_name.singularize parsed_params = params.require(model).permit(permitted_attributes).to_h JsonApiToolbox::Postable.normalize_post(parsed_params, model_name) end |
#render_object(object, options = {}) ⇒ Object
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/renderizable.rb', line 5 def render_object(object, = {}) if object.respond_to?(:errors) && object.errors.any? render((object, )) else renderization = { jsonapi: object, include: includes_params, fields: fields }.merge() render((object).merge(renderization)) end end |