提交 33848384 编写于 作者: R Rafael França

Merge pull request #23349 from kamipo/refactor_column_exists

Refactor `column_exists?` in `SchemaStatements`
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册