Module: SchemaPlus::DefaultExpr::Middleware::Sql::ColumnOptions
- Defined in:
- lib/schema_plus/default_expr/middleware.rb
Instance Method Summary collapse
-
#before(env) ⇒ Object
Add options for default expressions.
Instance Method Details
#before(env) ⇒ Object
Add options for default expressions
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/schema_plus/default_expr/middleware.rb', line 8 def before(env) = env. return unless (default = [: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 [:null] == false env.sql << " NOT NULL" end .delete(:default) .delete(:null) else [:default] = value end end |