Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #10605: dont_use_find_in_exists.diff

File dont_use_find_in_exists.diff, 0.9 kB (added by fcheung, 7 months ago)
  • activerecord/lib/active_record/base.rb

    old new  
    548548      #   Person.exists?(:name => "David") 
    549549      #   Person.exists?(['name LIKE ?', "%#{query}%"]) 
    550550      def exists?(id_or_conditions) 
    551         !find(:first, :select => "#{quoted_table_name}.#{primary_key}", 
    552               :conditions => expand_id_conditions(id_or_conditions)).nil? 
     551        sql = construct_finder_sql(:select => "#{quoted_table_name}.#{primary_key}",  
     552              :conditions => expand_id_conditions(id_or_conditions), :limit =>1) 
     553        connection.select_all(sanitize_sql(sql), "#{name} Exists").size > 0 
    553554      end 
    554555 
    555556      # Creates an object (or multiple objects) and saves it to the database, if validations pass.