JSONAPI-Resources / JSONAPI-Resources/jsonapi-resources
Relationships on subclasses don't adhere to model name
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Ruby
- Estrellas
- 2.3k
- Forks
- 546
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
A LoadError is thrown when trying to load a resource model with a namespaced custom model name that inherits from a abstract resource model that declares a relation.
Verified in versions 0.8.0.beta2 and 0.7.0
Modules:
module API
module V2
module Packages
class PackageResource < BaseResource
abstract
has_many :venues
end
end
end
end
module API
module V2
module Packages
class MeetingPackageResource < PackageResource
model_name 'Packages::MeetingPackage'
has_many :services, class_name: 'MeetingPackageService'
end
end
end
end
Path to meeting package module:
app/models/packages/meeting_package.rb
Error stack trace:
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/dependencies.rb:495:in `load_missing_constant': Unable to autoload constant MeetingPackage, expected /app/models/packages/meeting_package.rb to define it (LoadError)
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/dependencies.rb:184:in `const_missing'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/inflector/methods.rb:261:in `const_get'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/inflector/methods.rb:261:in `block in constantize'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/inflector/methods.rb:259:in `each'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/inflector/methods.rb:259:in `inject'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/inflector/methods.rb:259:in `constantize'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/inflector/methods.rb:304:in `safe_constantize'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/activesupport-4.2.7.1/lib/active_support/core_ext/string/inflections.rb:77:in `safe_constantiz
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.8.0.beta2/lib/jsonapi/resource.rb:934:in `_model_class'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.8.0.beta2/lib/jsonapi/resource.rb:974:in `block in _add_relationship'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.8.0.beta2/lib/jsonapi/resource.rb:970:in `each'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.8.0.beta2/lib/jsonapi/resource.rb:970:in `_add_relationship'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.8.0.beta2/lib/jsonapi/resource.rb:411:in `block in inherited'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.8.0.beta2/lib/jsonapi/resource.rb:408:in `each_value'
/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/jsonapi-resources-0.8.0.beta2/lib/jsonapi/resource.rb:408:in `inherited'
/app/resources/api/v2/packages/meeting_package_resource.rb:4:in `<module:Packages>'
/app/resources/api/v2/packages/meeting_package_resource.rb:3:in `<module:V2>'
/app/resources/api/v2/packages/meeting_package_resource.rb:2:in `<module:API>'
/app/resources/api/v2/packages/meeting_package_resource.rb:1:in `<top (required)>'
...
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproducir el caso de herencia con namespaces del issue, empezando en lib/jsonapi/resource.rb alrededor de _model_class, _add_relationship e inherited; compararlo con app/resources/api/v2/packages/meeting_package_resource.rb y app/models/packages/meeting_package.rb. Se considera completado cuando el recurso se carga sin el LoadError indicado y la relación venues heredada sigue siendo válida, con una prueba de regresión que cubra el caso.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- rails, ruby
- Área
- api, backend
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 42/100