Module: JsonApiToolbox::Renderizable
- Defined in:
- lib/renderizable.rb
Instance Method Summary collapse
- #default_includes_params ⇒ Object
- #includes_params ⇒ Object
- #permitted_params ⇒ Object
- #render_object(object) ⇒ Object
- #render_with_errors(object_errors) ⇒ Object
Instance Method Details
#default_includes_params ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/renderizable.rb', line 33 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 |
#includes_params ⇒ Object
23 24 25 |
# File 'lib/renderizable.rb', line 23 def includes_params params.fetch(:includes, {}) end |
#permitted_params ⇒ Object
27 28 29 30 31 |
# File 'lib/renderizable.rb', line 27 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) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/renderizable.rb', line 15 def render_object(object) if object.respond_to?(:valid?) && !object.valid? render_with_errors(object.errors) else render jsonapi: object, include: includes_params end end |
#render_with_errors(object_errors) ⇒ Object
5 6 7 8 9 10 11 12 13 |
# File 'lib/renderizable.rb', line 5 def render_with_errors(object_errors) errors = object_errors.details.map do |field, error_details| error_details.each_with_index.map do |item, error_i| build_line(item[:error], field, object_errors.[field][error_i]) end end render json: { errors: errors }, status: 422 end |