#new without any parameters

This commit is contained in:
Dylan Knutson
2025-07-18 17:41:23 +00:00
parent 5f502b4f6f
commit 5cdede91ec
2 changed files with 19 additions and 4 deletions

View File

@@ -253,11 +253,16 @@ module HasAuxTable
sig { params(config: AuxTableConfig).void }
def setup_initialize_hook!(config)
initialize_method = self.instance_method(:initialize)
self.define_method(:initialize) do |args, **kwargs, &block|
self.define_method(:initialize) do |*args, **kwargs, &block|
T.bind(self, ActiveRecord::Base)
main_args, aux_args = config.aux.partition_by_columns(args)
initialize_method.bind(self).call(main_args, **kwargs, &block)
config.aux_model_for(self).assign_attributes(aux_args)
if args && args.size == 1 && (arg = args.first).is_a?(Hash)
main_args, aux_args = config.aux.partition_by_columns(args.first)
initialize_method.bind(self).call(main_args, **kwargs, &block)
config.aux_model_for(self).assign_attributes(aux_args)
else
initialize_method.bind(self).call(*args, **kwargs, &block)
config.aux_model_for(self)
end
end
end

View File

@@ -51,6 +51,16 @@ RSpec.describe HasAuxTable do
end
end
it "can be created with .new" do
car = Car.new
car.name = "Honda Civic"
car.engine_size = 1.8
car.save!
expect(car.fuel_type).to be_nil
expect(car.engine_size).to eq(1.8)
expect(car.name).to eq("Honda Civic")
end
it "has the right #attributes" do
car =
Car.create!(name: "Honda Civic", fuel_type: "gasoline", engine_size: 2.0)