Class: ActiveRecord::ConnectionAdapters::SQLite3Adapter
- Inherits:
-
Object
- Object
- ActiveRecord::ConnectionAdapters::SQLite3Adapter
- Defined in:
- lib/enum_column/sqlite3_adapter.rb
Instance Method Summary collapse
- #__native_database_types_enum ⇒ Object
- #add_column_options!(sql, options) ⇒ Object
-
#columns(table_name, name = nil) ⇒ Object
:nodoc:.
-
#native_database_types ⇒ Object
:nodoc.
Instance Method Details
#__native_database_types_enum ⇒ Object
4 |
# File 'lib/enum_column/sqlite3_adapter.rb', line 4 alias __native_database_types_enum native_database_types |
#add_column_options!(sql, options) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/enum_column/sqlite3_adapter.rb', line 30 def (sql, ) unless sql =~ /\(32\)\('[^']+'/ super(sql, ) else sql.gsub!(/("[^"]+")([^3]+32\))(.+)/, '\1\2 CHECK(\1 in \3)') super(sql, ) end end |
#columns(table_name, name = nil) ⇒ Object
:nodoc:
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/enum_column/sqlite3_adapter.rb', line 12 def columns(table_name, name = nil)#:nodoc: constraints = { } @connection.execute "SELECT sql FROM sqlite_master WHERE name = '#{table_name}'" do |row| sql = row[0] sql.scan(/, \"(\w+)\" varchar\(32\) CHECK\(\"\w+\" in \(([^\)]+)\)/i) do |column, constraint| constraints[column] = constraint end end table_structure(table_name).map do |field| name = field['name'] type = field['type'] if (const = constraints[name]) type = "enum(#{const.strip})" end SQLite3ColumnWithEnum.new(name, field['dflt_value'], type, field['notnull'] == "0") end end |
#native_database_types ⇒ Object
:nodoc
6 7 8 9 10 |
# File 'lib/enum_column/sqlite3_adapter.rb', line 6 def native_database_types #:nodoc types = __native_database_types_enum types[:enum] = { :name => "varchar(32)" } types end |