Module: LogTable::LogStatus

Defined in:
lib/log_table.rb

Constant Summary collapse

STATUS_COLUMN_NAME =
'log_table_status'
INSERTED =
'inserted'
UPDATED =
'updated'
DELETED =
'deleted'

Class Method Summary collapse

Class Method Details

.sql_func(status, model_name, column_names, table_name, options) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/log_table.rb', line 19

def self.sql_func(status, model_name, column_names, table_name, options)
  col_names = column_names

  db_columns = [STATUS_COLUMN_NAME] + col_names.map { |col_name|
      col_name == 'id' ? "#{model_name.underscore}_id" : "#{col_name}"
    }

  db_columns_str = db_columns.join(', ')

  values = (["\"#{status}\""] + col_names.map { |col| "NEW.#{col}" }).join(', ')

  log_table_name = options[:table_name] || "#{table_name}_log"

  sql = "INSERT INTO #{log_table_name}(#{db_columns_str}) VALUES (#{values})"

  sql
end