7

I need to use sanitization in Jobs, so i wrote method

  def sanitized_sql_statement(query)
    ActiveRecord::Base.send(
        :sanitize_sql_array,
        query
    )
  end

I have 2 different job files. Where I should place this method and how to use it from Jobs?

Max Paprikas
  • 579
  • 6
  • 16

1 Answers1

15

Use concern.
create concerns directory under jobs directory app/jobs/concerns like models and controllers do.

write concern file.

module SqlSanitizer
  extend ActiveSupport::Concern

  def sanitized_sql_statement(query)
    ActiveRecord::Base.send(
      :sanitize_sql_array,
      query
    )
  end
end

And include in your job

class YourJob < ActiveJob::Base
  include SqlSanitizer

  # ... do something
end

If you fail to auto load SqlSanitizer, add autoload path in config/application.rb file => config.autoload_paths << "#{Rails.root}/app/jobs/concerns"

Jaehyun Shin
  • 1,562
  • 14
  • 25
  • I hot an error `NameError (uninitialized constant NotifierJob::SqlSanitizer):` Its not working in with ActiveJob – Max Paprikas Feb 10 '16 at 04:55
  • 2
    @MaxPaprikas How about include like this `include ::SqlSanitizer`. If concern file is not loaded, add path in config file `config.autoload_paths << "#{Rails.root}/app/jobs/concerns"` – Jaehyun Shin Feb 10 '16 at 05:02
  • 1
    Works great! Please add info about autoload to answer (autoload did the trick) – Max Paprikas Feb 10 '16 at 05:10