Index: test/types_test.rb =================================================================== --- test/types_test.rb (revision 312) +++ test/types_test.rb (working copy) @@ -8,7 +8,6 @@ :symbol => "'--- :symbol\n'", 1 => '1', 1.2 => '1.2', - nil => 'NULL', true => '1', false => '0', Time.now => "'#{Time.now.to_s(:db)}'", @@ -27,17 +26,17 @@ sql = User.select { |m| m.name == 1.2 }.to_sql sql.should == "SELECT * FROM users WHERE users.`name` = 1.2" end - + specify "integer" do sql = User.select { |m| m.name == 1 }.to_sql sql.should == "SELECT * FROM users WHERE users.`name` = 1" end - + specify "true" do sql = User.select { |m| m.name == true }.to_sql sql.should == "SELECT * FROM users WHERE users.`name` = 1" end - + specify "false" do sql = User.select { |m| m.name == false }.to_sql sql.should == "SELECT * FROM users WHERE users.`name` = 0" @@ -45,7 +44,7 @@ specify "nil" do sql = User.select { |m| m.name == nil }.to_sql - sql.should == "SELECT * FROM users WHERE users.`name` = NULL" + sql.should == "SELECT * FROM users WHERE users.`name` is NULL" end xspecify "Time" do Index: lib/ambition/where.rb =================================================================== --- lib/ambition/where.rb (revision 312) +++ lib/ambition/where.rb (working copy) @@ -121,11 +121,16 @@ raise "Not implemented: #{method}" end end - + def translation(receiver, method, other) case method.to_s when '==' - "#{process(receiver)} = #{process(other)}" + case other_value = process(other) + when "NULL" + "#{process(receiver)} is #{other_value}" + else + "#{process(receiver)} = #{other_value}" + end when '<>', '>', '<' "#{process(receiver)} #{method} #{process(other)}" when 'include?'