Module: JSONAPI::Resources::RelationshipsDsl::RelationshipHelperMethods
- Defined in:
- lib/json_api/resources/concerns/relationships_dsl.rb
Instance Method Summary collapse
- #build_relationship_definitions ⇒ Object
- #detect_polymorphic(name, options) ⇒ Object
- #register_relationship(name:, type:, meta:, options:) ⇒ Object
- #should_inherit_relationships?(declared_relationships) ⇒ Boolean
- #validate_append_only_options!(options) ⇒ Object
Instance Method Details
#build_relationship_definitions ⇒ Object
48 49 50 51 52 53 |
# File 'lib/json_api/resources/concerns/relationships_dsl.rb', line 48 def build_relationship_definitions declared_relationships = instance_variable_defined?(:@relationships) rels = @relationships || [] rels = superclass.relationship_definitions + rels if should_inherit_relationships?(declared_relationships) rels.uniq { |r| r[:name] } end |
#detect_polymorphic(name, options) ⇒ Object
63 64 65 66 67 68 69 70 71 |
# File 'lib/json_api/resources/concerns/relationships_dsl.rb', line 63 def detect_polymorphic(name, ) return if .key?(:polymorphic) model_klass = reflection_model_class return unless model_klass.respond_to?(:reflect_on_association) reflection = model_klass.reflect_on_association(name) [:polymorphic] = reflection&.polymorphic? end |
#register_relationship(name:, type:, meta:, options:) ⇒ Object
42 43 44 45 46 |
# File 'lib/json_api/resources/concerns/relationships_dsl.rb', line 42 def register_relationship(name:, type:, meta:, options:) @relationships ||= [] @relationships << { name: name.to_sym, type:, meta:, options: } reset_relationship_definitions! end |
#should_inherit_relationships?(declared_relationships) ⇒ Boolean
73 74 75 76 77 |
# File 'lib/json_api/resources/concerns/relationships_dsl.rb', line 73 def should_inherit_relationships?(declared_relationships) !declared_relationships && superclass != JSONAPI::Resource && superclass.respond_to?(:relationship_definitions) end |
#validate_append_only_options!(options) ⇒ Object
55 56 57 58 59 60 61 |
# File 'lib/json_api/resources/concerns/relationships_dsl.rb', line 55 def () if [:append_only] && [:purge_on_nil] == true raise ArgumentError, "Cannot use append_only: true with purge_on_nil: true" end [:purge_on_nil] = false if [:append_only] && !.key?(:purge_on_nil) end |