mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
eliminating method_missing on TableDefinition
This commit is contained in:
parent
c57f5d58ea
commit
5793d5e002
2 changed files with 19 additions and 17 deletions
|
@ -318,21 +318,13 @@ module ActiveRecord
|
|||
@base = base
|
||||
end
|
||||
|
||||
#Handles non supported datatypes - e.g. XML
|
||||
def method_missing(symbol, *args)
|
||||
if symbol.to_s == 'xml'
|
||||
xml_column_fallback(args)
|
||||
else
|
||||
super
|
||||
end
|
||||
end
|
||||
def xml(*args)
|
||||
raise NotImplementedError unless %w{
|
||||
sqlite mysql mysql2
|
||||
}.include? @base.adapter_name.downcase
|
||||
|
||||
def xml_column_fallback(*args)
|
||||
case @base.adapter_name.downcase
|
||||
when 'sqlite', 'mysql'
|
||||
options = args.extract_options!
|
||||
column(args[0], :text, options)
|
||||
end
|
||||
options = args.extract_options!
|
||||
column(args[0], :text, options)
|
||||
end
|
||||
|
||||
# Appends a primary key definition to the table definition.
|
||||
|
|
|
@ -1588,11 +1588,21 @@ if ActiveRecord::Base.connection.supports_migrations?
|
|||
end
|
||||
end
|
||||
|
||||
if current_adapter?(:PostgreSQLAdapter)
|
||||
if current_adapter?(:PostgreSQLAdapter) || current_adapter?(:SQLiteAdapter) || current_adapter?(:MysqlAdapter) || current_adapter?(:Mysql2Adapter)
|
||||
def test_xml_creates_xml_column
|
||||
type = current_adapter?(:PostgreSQLAdapter) ? 'xml' : :text
|
||||
|
||||
with_new_table do |t|
|
||||
t.expects(:column).with(:data, type, {})
|
||||
t.xml :data
|
||||
end
|
||||
end
|
||||
else
|
||||
def test_xml_creates_xml_column
|
||||
with_new_table do |t|
|
||||
t.expects(:column).with(:data, 'xml', {})
|
||||
t.xml :data
|
||||
assert_raises(NotImplementedError) do
|
||||
t.xml :data
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue