How know record was found?

OK, for the life of me I can't see anywhere how I am supposed to figure out if a record was actually found.

class Shape < ActiveRecord::Base

     def self.findSquare
         find(:first, conditions: whetever.......)

         # SAME FOR find :all ??


-- gw

Length is not an available method, nor size, nor count, nor anything else that would seem logical or semi-logical.

-- gw

Well, not quite. find(:first) is going to be nil or a Shape object. If it's nil, you can't call nil.length and if it's a Shape object, then Shape#length might actually be something else.

if result = find(:first, :conditions => ...)
   # do something with the record in result

result_array = find(:all, :conditions => ...)
unless result_array.empty?
   # do something with the records in the result_array

for either case, you might just return the find() and let the caller check for nil or iterate over the empty array

(Even if find(:all, ...) only gets a single match, it will still be in an array.)

Rob Biedenharn

And if there are no matches, it will be an empty array. If you need
to do something with it, try this:

Blah.find(:all).each do |blah|
    # Do something

I noodled with something like that but ran into problems with subsequent steps which got me sidetracked. I now have that sorted out. I apparenty had my head warped by the combination of what Rails was doing, Ruby's implied return, and the class vs instance scoping of methods and my own arbitrary attributes added to the model.

My son managed to unwarp all that, and now I can see again.


-- gw