rom
rom copied to clipboard
AutoStruct does not respect type definitions for associations
When using auto_struct and a module definition, ROM is not respecting the configured types for an association.
schema(:articles, infer: true) do
associations do
belongs_to :profiles, as: :author, foreign_key: :author_id
end
end
class Entities::Article < Entity # entity itself inherits from ROM::Struct
attribute :author, ::Entities::Profile
end
ArticleRepository.new(rom).first.author.class
# => Entities::Author ... expect an Entities::Profile
reproduction script: https://gist.github.com/cflipse/947447e4c656b35d351ffb518df38d65
Directly mapping to the class via map_to
will coerce the author field correctly.
@cflipse Adding struct_namespace Entities
to the ArticleRepository
solved the issue for me:
class Articles < ROM::Repository[:articles]
struct_namespace Entities
def list
articles.combine(:author)
end
end