Skip to content

Error when a relation with the name options exists. #675

@dhnaranjo

Description

@dhnaranjo

Describe the bug

When a relation with the name options exists the following error is raised when you create an instance of it:

rom-core-5.2.6/lib/rom/schema.rb:232:in `[]': :struct_namespace attribute doesn't exist in options schema (KeyError)

This happens because ROM::Initializer::InstanceMethods#options is called at either ROM::Relation#struct_namespace or ROM::Relation#meta_ast.

To Reproduce

require "rom"
require "dry-types"

rom = ROM.container(:memory, 'memory://test') do |config|
  config.relation(:options) do
    schema do
      attribute :whatever, Dry::Types["string"]
    end
  end
end

options = rom.relations[:options]
options.changeset(:create, whatever: "who cares").commit

Expected behavior

A relation named options doesn't poop my app

My environment

  • Affects my production application: No in that we're not yet in production, but yes this impacts real job stuff.
  • Ruby version: 3.1.1
  • OS: MacOS 12.whatever on an Apple Silicon device.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions