attributes
This commit is contained in:
@@ -51,6 +51,7 @@ module HasAuxTable
|
||||
setup_initialize_hook!(aux_config)
|
||||
setup_save_hook!(aux_config)
|
||||
setup_reload_hook!(aux_config)
|
||||
setup_attributes_hook!(aux_config)
|
||||
setup_relation_extensions!(aux_config)
|
||||
setup_attribute_getter_setter_hooks!(aux_config)
|
||||
|
||||
@@ -306,6 +307,17 @@ module HasAuxTable
|
||||
end
|
||||
end
|
||||
|
||||
sig { params(aux_config: AuxTableConfig).void }
|
||||
def setup_attributes_hook!(aux_config)
|
||||
attributes_method = self.instance_method(:attributes)
|
||||
self.define_method(:attributes) do |*args|
|
||||
T.bind(self, ActiveRecord::Base)
|
||||
ret = attributes_method.bind(self).call(*args)
|
||||
ret.merge!(aux_config.aux_attributes(self))
|
||||
ret
|
||||
end
|
||||
end
|
||||
|
||||
sig do
|
||||
params(
|
||||
aux_table_name: Symbol,
|
||||
|
||||
@@ -102,6 +102,14 @@ module HasAuxTable
|
||||
aux_model.assign_attributes(aux_args)
|
||||
end
|
||||
|
||||
sig do
|
||||
params(main_model: ActiveRecord::Base).returns(T::Hash[Symbol, T.untyped])
|
||||
end
|
||||
def aux_attributes(main_model)
|
||||
aux_model = self.ensure_aux_target(main_model)
|
||||
aux_model.attributes.slice(*self.aux_column_names)
|
||||
end
|
||||
|
||||
sig { returns(T::Array[String]) }
|
||||
def aux_column_names
|
||||
@aux_column_names ||=
|
||||
|
||||
Reference in New Issue
Block a user