# File lib/arel/predications.rb, line 27 def in other case other when Arel::SelectManager Arel::Nodes::In.new(self, other.ast) when Range if other.exclude_end? left = Nodes::GreaterThanOrEqual.new(self, other.begin) right = Nodes::LessThan.new(self, other.end) Nodes::And.new [left, right] else Nodes::Between.new(self, Nodes::And.new([other.begin, other.end])) end else Nodes::In.new self, other end end