module SchemaPlus::DefaultExpr::Middleware::Sql::ColumnOptions
Public Instance Methods
before(env)
click to toggle source
Add options for default expressions
# File lib/schema_plus/default_expr/middleware.rb, line 8 def before(env) options = env.options return unless (default = options[:default]) if default.is_a? Hash and [[:expr], [:value]].include?(default.keys) value = default[:value] expr = env.connection.sql_for_function(default[:expr]) || default[:expr] if default[:expr] else value = default expr = env.connection.sql_for_function(default) end if expr raise ArgumentError, "Invalid default expression" unless env.connection.default_expr_valid?(expr) env.sql << " DEFAULT #{expr}" # must explicitly check for :null to allow change_column to work on migrations if options[:null] == false env.sql << " NOT NULL" end options.delete(:default) options.delete(:null) else options[:default] = value end end