Module: Arable::Columns::FromSchema

Defined in:
lib/arable/columns/from_schema.rb

Class Method Summary collapse

Class Method Details

.call(table_name) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/arable/columns/from_schema.rb', line 7

def call(table_name)
  return if schema.blank?

  table_definition_match = schema.match(/create_table "#{table_name}".*?\n(.*?)\n *end/m)

  columns =
    table_definition_match[1]
      .lines
      .reject { |line| line.include?("t.index") }
      .map { |line| line.match(/t\.[a-z]* "([a-z_]*)"/)[1] }

  return columns if table_definition_match[0].include?("id: false")

  ["id"] + columns
end