Module: ActiveRecord::ConnectionAdapters::OracleEnhanced::SchemaStatements
- Defined in:
- lib/activerecord/monkey_patch/rails5_1.rb,
lib/activerecord/monkey_patch/rails5_2.rb
Instance Method Summary collapse
- #change_column_null(table_name, column_name, null, default = nil) ⇒ Object
-
#new_column_from_field(table_name, field) ⇒ Object
Original code is the following URL.
Instance Method Details
#change_column_null(table_name, column_name, null, default = nil) ⇒ Object
190 191 192 193 194 195 196 197 198 199 200 |
# File 'lib/activerecord/monkey_patch/rails5_1.rb', line 190 def change_column_null(table_name, column_name, null, default = nil) #:nodoc: column = column_for(table_name, column_name) unless null || default.nil? execute("UPDATE #{quote_table_name(table_name)} SET #{quote_column_name(column_name)}=#{quote(default)} WHERE #{quote_column_name(column_name)} IS NULL") end sql_type = column.sql_type.to_s == 'DATETIME' ? 'DATE' : column.sql_type # monkey_patched change_column table_name, column_name, sql_type, :null => null end |
#new_column_from_field(table_name, field) ⇒ Object
Original code is the following URL.
https://github.com/rsim/oracle-enhanced/blob/v5.2.3/lib/active_record/connection_adapters/oracle_enhanced/schema_statements.rb#L618-L652
38 39 40 41 42 43 44 45 46 47 48 49 50 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 |
# File 'lib/activerecord/monkey_patch/rails5_2.rb', line 38 def new_column_from_field(table_name, field) limit, scale = field["limit"], field["scale"] if limit || scale field["sql_type"] += "(#{(limit || 38).to_i}" + ((scale = scale.to_i) > 0 ? ",#{scale})" : ")") end if field["sql_type_owner"] field["sql_type"] = field["sql_type_owner"] + "." + field["sql_type"] end is_virtual = field["virtual_column"] == "YES" # clean up odd default spacing from Oracle if field["data_default"] && !is_virtual field["data_default"].sub!(/^(.*?)\s*$/, '\1') # If a default contains a newline these cleanup regexes need to # match newlines. field["data_default"].sub!(/^'(.*)'$/m, '\1') field["data_default"] = nil if field["data_default"] =~ /^(null|empty_[bc]lob\(\))$/i # TODO: Needs better fix to fallback "N" to false field["data_default"] = false if (field["data_default"] == "N" && OracleEnhancedAdapter.emulate_booleans_from_strings) end = (field["sql_type"], is_virtual) # *** Its a monkey patch paragraph. *** p "sql_type: #{type_metadata.sql_type}" if /date/i === .sql_type if .type == :date .instance_eval('@sql_type = "DATETIME"') end end default_value = extract_value_from_default(field["data_default"]) default_value = nil if is_virtual OracleEnhanced::Column.new(oracle_downcase(field["name"]), default_value, , field["nullable"] == "Y", table_name, field["column_comment"] ) end |