Methods
Public Class
Public Instance
Attributes
conditions | [R] |
An array of all two pairs with the first element specifying the condition and the second element specifying the result if the condition matches. |
default | [R] |
The default value if no conditions match. |
expression | [R] |
An optional expression to test the conditions against |
Public Class methods
new(conditions, default, expression=(no_expression=true; nil))
Create an object with the given conditions and default value, and optional expression. An expression can be provided to test each condition against, instead of having all conditions represent their own boolean expression.
[show source]
# File lib/sequel/sql.rb 1207 def initialize(conditions, default, expression=(no_expression=true; nil)) 1208 raise(Sequel::Error, 'CaseExpression conditions must be a hash or array of all two pairs') unless Sequel.condition_specifier?(conditions) 1209 @conditions = conditions.to_a.dup.freeze 1210 @default = default 1211 @expression = expression 1212 @no_expression = no_expression 1213 freeze 1214 end
Public Instance methods
expression?()
Whether to use an expression for this CASE expression.
[show source]
# File lib/sequel/sql.rb 1217 def expression? 1218 !@no_expression 1219 end
with_merged_expression()
Merge the CASE expression into the conditions, useful for databases that don’t support CASE expressions.
[show source]
# File lib/sequel/sql.rb 1223 def with_merged_expression 1224 if expression? 1225 e = expression 1226 CaseExpression.new(conditions.map{|c, r| [::Sequel::SQL::BooleanExpression.new(:'=', e, c), r]}, default) 1227 else 1228 self 1229 end 1230 end