1
0
Fork 0
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:
Aaron Patterson 2010-09-29 11:18:43 -07:00
parent c57f5d58ea
commit 5793d5e002
2 changed files with 19 additions and 17 deletions

View file

@ -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.

View file

@ -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