Merge pull request #23349 from kamipo/refactor_column_exists
Refactor `column_exists?` in `SchemaStatements`
This commit is contained in:
commit
33848384f3
@ -112,13 +112,14 @@ def columns(table_name)
|
||||
#
|
||||
def column_exists?(table_name, column_name, type = nil, options = {})
|
||||
column_name = column_name.to_s
|
||||
columns(table_name).any?{ |c| c.name == column_name &&
|
||||
(!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]) }
|
||||
checks = []
|
||||
checks << lambda { |c| c.name == column_name }
|
||||
checks << lambda { |c| c.type == type } if type
|
||||
[:limit, :precision, :scale, :default, :null].each do |attr|
|
||||
checks << lambda { |c| c.send(attr) == options[attr] } if options.key?(attr)
|
||||
end
|
||||
|
||||
columns(table_name).any? { |c| checks.all? { |check| check[c] } }
|
||||
end
|
||||
|
||||
# Returns just a table's primary key
|
||||
|
Loading…
Reference in New Issue
Block a user