mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Add more options to column_exists? method
Also fix failures in check options for nil
This commit is contained in:
parent
d79ca9288e
commit
59e23e2ff2
2 changed files with 18 additions and 10 deletions
|
@ -68,10 +68,12 @@ module ActiveRecord
|
|||
# column_exists?(:suppliers, :name, :string, :limit => 100)
|
||||
def column_exists?(table_name, column_name, type = nil, options = {})
|
||||
columns(table_name).any?{ |c| c.name == column_name.to_s &&
|
||||
(!type || c.type == type) &&
|
||||
(!options[:limit] || c.limit == options[:limit]) &&
|
||||
(!options[:precision] || c.precision == options[:precision]) &&
|
||||
(!options[:scale] || c.scale == options[:scale]) }
|
||||
(!type || c.type == type) &&
|
||||
(!options.key?(:limit) || c.limit == options[:limit]) &&
|
||||
(!options.key?(:precision) || c.precision == options[:precision]) &&
|
||||
(!options.key?(:scale) || c.scale == options[:scale]) &&
|
||||
(!options.key?(:default) || c.default == options[:default]) &&
|
||||
(!options.key?(:null) || c.null == options[:null]) }
|
||||
end
|
||||
|
||||
# Creates a new table with the name +table_name+. +table_name+ may either
|
||||
|
|
|
@ -291,14 +291,20 @@ module ActiveRecord
|
|||
|
||||
def test_column_exists_with_definition
|
||||
connection.create_table :testings do |t|
|
||||
t.column :foo, :string, :limit => 100
|
||||
t.column :bar, :decimal, :precision => 8, :scale => 2
|
||||
t.column :foo, :string, limit: 100
|
||||
t.column :bar, :decimal, precision: 8, scale: 2
|
||||
t.column :taggable_id, :integer, null: false
|
||||
t.column :taggable_type, :string, default: 'Photo'
|
||||
end
|
||||
|
||||
assert connection.column_exists?(:testings, :foo, :string, :limit => 100)
|
||||
refute connection.column_exists?(:testings, :foo, :string, :limit => 50)
|
||||
assert connection.column_exists?(:testings, :bar, :decimal, :precision => 8, :scale => 2)
|
||||
refute connection.column_exists?(:testings, :bar, :decimal, :precision => 10, :scale => 2)
|
||||
assert connection.column_exists?(:testings, :foo, :string, limit: 100)
|
||||
refute connection.column_exists?(:testings, :foo, :string, limit: nil)
|
||||
assert connection.column_exists?(:testings, :bar, :decimal, precision: 8, scale: 2)
|
||||
refute connection.column_exists?(:testings, :bar, :decimal, precision: nil, scale: nil)
|
||||
assert connection.column_exists?(:testings, :taggable_id, :integer, null: false)
|
||||
refute connection.column_exists?(:testings, :taggable_id, :integer, null: true)
|
||||
assert connection.column_exists?(:testings, :taggable_type, :string, default: 'Photo')
|
||||
refute connection.column_exists?(:testings, :taggable_type, :string, default: nil)
|
||||
end
|
||||
|
||||
def test_column_exists_on_table_with_no_options_parameter_supplied
|
||||
|
|
Loading…
Reference in a new issue