Sha256: 7d7d5a2dde1dc1b5a14cd0449ba02cb3034f300a4cdc2ef537d109787ec62242

Contents?: true

Size: 1.35 KB

Versions: 26

Compression:

Stored size: 1.35 KB

Contents

module RestfulResource
  module Associations
    def has_many(nested_resource_type)
      namespace = to_s.deconstantize
      klass_name = nested_resource_type.to_s.singularize.camelize.to_s
      klass_name = "#{namespace}::#{klass_name}" if namespace.present?

      send(:define_method, nested_resource_type) do
        klass = begin
          klass_name.safe_constantize
        rescue NameError
          nil
        end
        klass = RestfulResource::OpenObject if klass.nil? || !(klass < RestfulResource::OpenObject)
        nested_resource = @inner_object.send(nested_resource_type)
        return nil if nested_resource.nil?

        nested_resource.map { |obj| klass.new(obj) }
      end
    end

    def has_one(nested_resource_type)
      namespace = to_s.deconstantize
      klass_name = nested_resource_type.to_s.camelize.to_s
      klass_name = "#{namespace}::#{klass_name}" if namespace.present?

      send(:define_method, nested_resource_type) do
        klass = begin
          klass_name.safe_constantize
        rescue NameError
          nil
        end
        klass = RestfulResource::OpenObject if klass.nil? || !(klass < RestfulResource::OpenObject)
        nested_resource = @inner_object.send(nested_resource_type)
        return nil if nested_resource.nil?

        klass.new(@inner_object.send(nested_resource_type))
      end
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
restful_resource-2.18.1 lib/restful_resource/associations.rb
restful_resource-2.18.0 lib/restful_resource/associations.rb
restful_resource-2.17.0 lib/restful_resource/associations.rb
restful_resource-2.16.0 lib/restful_resource/associations.rb
restful_resource-2.15.0 lib/restful_resource/associations.rb
restful_resource-2.14.0 lib/restful_resource/associations.rb
restful_resource-2.13.4 lib/restful_resource/associations.rb
restful_resource-2.13.3 lib/restful_resource/associations.rb
restful_resource-2.13.2 lib/restful_resource/associations.rb
restful_resource-2.13.1 lib/restful_resource/associations.rb
restful_resource-2.13.0 lib/restful_resource/associations.rb
restful_resource-2.12.1 lib/restful_resource/associations.rb
restful_resource-2.12.0 lib/restful_resource/associations.rb
restful_resource-2.11.0 lib/restful_resource/associations.rb
restful_resource-2.10.3 lib/restful_resource/associations.rb
restful_resource-2.10.1 lib/restful_resource/associations.rb
restful_resource-2.10.0 lib/restful_resource/associations.rb
restful_resource-2.9.1 lib/restful_resource/associations.rb
restful_resource-2.8.0 lib/restful_resource/associations.rb
restful_resource-2.7.0 lib/restful_resource/associations.rb