I have seen in paperclip gem has_attached_file :avatar
.
How can I create a method like this for models?
My objective is whenever i define attribute like custom_method :attribute
i can run some active operation the data of attribute on active record callbacks like save and delete.
CodePudding user response:
It is just a class method.
def self.custom_method(attribute)
before_save do
do_stuff_with(attribute)
end
define_method "do_stuff_with_#{attribute}" do
do_stuff_with(attribute)
end
do_other_stuff
end
You can either add it to your ApplicationRecord
for it to be available everywhere or add it to a Concern
/Mixin
/Module
that you can include when you want to use it.