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.......)

     # HOW DO AI KNOW ONE WAS ACTUALLY FOUND?
     # SAME FOR find :all ??

 end

end

– gw

Greg W. wrote:

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.......)

     # HOW DO AI KNOW ONE WAS ACTUALLY FOUND?
     # SAME FOR find :all ??

 end

end

– gw

class Shape < ActiveRecord::Base

 def self.findSquare
     results = find(:first, conditions: whetever.......)
     if results.length > 0
       results
     else
       raise "No hits!"
     end
 end

end

Is this what you want?

Semin

On Nov 1, 2007, at 5:45 PM, Semin Lee wrote:

     # SAME FOR find :all ??
       raise "No hits!"
     end
 end

end

Is this what you want?

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

– gw

On Nov 1, 2007, at 8:45 PM, Semin Lee wrote:

    # SAME FOR find :all ??
    if results.length > 0
      results
    else
      raise "No hits!"
    end
end

end

Is this what you want?

Semin

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

end

result_array = find(:all, :conditions => …)
unless result_array.empty?

do something with the records in the result_array

end

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
Rob B. http://agileconsultingllc.com
[email protected]

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
end

Rob B. wrote:

On Nov 1, 2007, at 8:45 PM, Semin Lee wrote:

    # SAME FOR find :all ??
    if results.length > 0
      results
    else
      raise "No hits!"
    end
end

end

Is this what you want?

Semin

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

end

result_array = find(:all, :conditions => …)
unless result_array.empty?

do something with the records in the result_array

end

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
Rob B. http://agileconsultingllc.com
[email protected]

oops, sorry I misunderstood the return types of find(:all) and
find(:first).

thanks Rob,

Semin

On Nov 1, 2007, at 6:21 PM, Rob B. wrote:

end

end

do something with the records in the result_array

end

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.)

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.

Thx.

– gw