module Shrine::Plugins::Activerecord::AttachmentMethods
Public Instance Methods
included(model)
click to toggle source
Calls superclass method
# File lib/shrine/plugins/activerecord.rb, line 20 def included(model) super return unless model < ::ActiveRecord::Base name = @name if shrine_class.opts[:activerecord][:validations] model.validate do send(:"#{name}_attacher").send(:activerecord_validate) end end if shrine_class.opts[:activerecord][:callbacks] model.before_save do if send(:"#{name}_attacher").changed? send(:"#{name}_attacher").send(:activerecord_before_save) end end [:create, :update].each do |action| model.after_commit on: action do if send(:"#{name}_attacher").changed? send(:"#{name}_attacher").send(:activerecord_after_save) end end end model.after_commit on: :destroy do if send(:"#{name}_attacher").attached? send(:"#{name}_attacher").send(:activerecord_after_destroy) end end end # reload the attacher on record reload define_method :reload do |*args| result = super(*args) send(:"#{name}_attacher").reload if instance_variable_defined?(:"@#{name}_attacher") result end end