#new without any parameters
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user