From 5cdede91ecfbce1a20a4b640a1afb3443ca0dbad Mon Sep 17 00:00:00 2001 From: Dylan Knutson Date: Fri, 18 Jul 2025 17:41:23 +0000 Subject: [PATCH] #new without any parameters --- lib/has_aux_table.rb | 13 +++++++++---- spec/active_record/has_aux_table_spec.rb | 10 ++++++++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/has_aux_table.rb b/lib/has_aux_table.rb index 70e2058..d73085e 100644 --- a/lib/has_aux_table.rb +++ b/lib/has_aux_table.rb @@ -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 diff --git a/spec/active_record/has_aux_table_spec.rb b/spec/active_record/has_aux_table_spec.rb index 969991b..865e525 100644 --- a/spec/active_record/has_aux_table_spec.rb +++ b/spec/active_record/has_aux_table_spec.rb @@ -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)