#new without any parameters
This commit is contained in:
@@ -253,11 +253,16 @@ module HasAuxTable
|
|||||||
sig { params(config: AuxTableConfig).void }
|
sig { params(config: AuxTableConfig).void }
|
||||||
def setup_initialize_hook!(config)
|
def setup_initialize_hook!(config)
|
||||||
initialize_method = self.instance_method(:initialize)
|
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)
|
T.bind(self, ActiveRecord::Base)
|
||||||
main_args, aux_args = config.aux.partition_by_columns(args)
|
if args && args.size == 1 && (arg = args.first).is_a?(Hash)
|
||||||
initialize_method.bind(self).call(main_args, **kwargs, &block)
|
main_args, aux_args = config.aux.partition_by_columns(args.first)
|
||||||
config.aux_model_for(self).assign_attributes(aux_args)
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,16 @@ RSpec.describe HasAuxTable do
|
|||||||
end
|
end
|
||||||
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
|
it "has the right #attributes" do
|
||||||
car =
|
car =
|
||||||
Car.create!(name: "Honda Civic", fuel_type: "gasoline", engine_size: 2.0)
|
Car.create!(name: "Honda Civic", fuel_type: "gasoline", engine_size: 2.0)
|
||||||
|
|||||||
Reference in New Issue
Block a user