Method: AnonymousActiveRecord.generate
- Defined in:
- lib/anonymous_active_record.rb
.generate(table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: DEFAULT_PARENT_KLASS, connection_params: DEFAULT_CONNECTION_PARAMS, &block) ⇒ Object
Defines a pseudo anonymous class in a particular namespace of your choosing.
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/anonymous_active_record.rb', line 51 def generate(table_name: nil, klass_namespaces: [], klass_basename: nil, columns: [], indexes: [], timestamps: true, parent_klass: DEFAULT_PARENT_KLASS, connection_params: DEFAULT_CONNECTION_PARAMS, &block) gen = AnonymousActiveRecord::Generator.new(table_name, klass_namespaces, klass_basename, parent_klass) klass = gen.generate(&block) connection_params = YAML.load_file(connection_params) if connection_params.is_a?(String) klass.establish_connection(connection_params.dup) klass.connection.create_table(gen.table_name) do |t| columns.each do |col| if col.is_a?(Hash) # :name and :type are required at minimum name = col.delete(:name) type = col.delete(:type) t.column(name, type, **col) elsif col.is_a?(Array) = col. if .present? t.column(*col, **) elsif col.length == 1 t.column(col[0], :string) else t.column(col[0], col[-1] || :string) end else t.column(col, :string) end end indexes.each do || if .is_a?(Hash) column_names = .delete(:columns) t.index(column_names, **) elsif .is_a?(Array) = . t.index(*, **) else t.index() end end t. if end klass end |