Module: Avo::Concerns::AssociationQueryScope
- Included in:
- BaseController
- Defined in:
- lib/avo/concerns/association_query_scope.rb
Instance Method Summary collapse
- #association_query_scope(parent_resource:, parent_record:, association_name:, authorization:, resource:, field_association_name: association_name) ⇒ Object
- #association_summary? ⇒ Boolean
- #build_association_scope_from_params(resource:, authorization:) ⇒ Object
Instance Method Details
#association_query_scope(parent_resource:, parent_record:, association_name:, authorization:, resource:, field_association_name: association_name) ⇒ Object
4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/avo/concerns/association_query_scope.rb', line 4 def association_query_scope(parent_resource:, parent_record:, association_name:, authorization:, resource:, field_association_name: association_name) valid_association_name = BaseResource.valid_association_name(parent_record, association_name) association_field = find_association_field(resource: parent_resource, association: field_association_name) query = .apply_policy( parent_record.send(valid_association_name) ) if association_field&.scope.present? query = Avo::ExecutionContext.new( target: association_field.scope, query: query, parent: parent_record, resource: resource, parent_resource: parent_resource ).handle end query end |
#association_summary? ⇒ Boolean
25 26 27 28 29 |
# File 'lib/avo/concerns/association_query_scope.rb', line 25 def association_summary? params[:via_record_id].present? && params[:via_resource_class].present? && (params[:association_name].present? || params[:related_name].present?) end |
#build_association_scope_from_params(resource:, authorization:) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/avo/concerns/association_query_scope.rb', line 31 def build_association_scope_from_params(resource:, authorization:) parent_resource_class = Avo.resource_manager.get_resource(params[:via_resource_class]) @parent_record = parent_resource_class.find_record(params[:via_record_id], params: params) @parent_resource = parent_resource_class.new( record: @parent_record, view: Avo::ViewInquirer.new("show") ) @parent_resource.detect_fields association_query_scope( parent_resource: @parent_resource, parent_record: @parent_record, association_name: params[:association_name] || params[:related_name], authorization: , resource: resource ) end |