you just need to add options. If you take a look at documentation, you can pass arguments in block:
#model
validates_with ImageSizeValidator, paperclip_field_name: :avatar
#validator
def validate(record)
if record.send(options[:paperclip_field_name].to_s+"_file_name").present?
record.errors[:base] << (I18n.t :in_between, scope: "activerecord.errors.models.user.attributes.#{options[:paperclip_field_name]}_file_size") unless record.send(options[:paperclip_field_name].to_s+"_file_name").to_i < 200000
end
end
but much easier to use validate_each
method
#model
validates :avatar, image_size: true, image_type: true, image_conversion: true
#validator
def validate_each(record, attribute, value)
if record.send(attribute.to_s+"_file_name").present?
record.errors[:base] << (I18n.t :in_between, scope: "activerecord.errors.models.user.attributes.#{attribute}_file_name)") unless record.send(attribute.to_s+"_file_name").to_i < 200000
end
end