Error when a relation with the name `options` exists.
dhnaranjo opened this issue · 2 comments
dhnaranjo commented
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.
dhnaranjo commented
Cool thing about being pre-launch is I just went and changed the table name, so I'm not urgently awaiting a fix or nothing.
solnic commented
Thanks for reporting this. It's been on my radar as it's a general issue of having reserved names that cannot be used as relation names. This will be properly addressed in 6.0.