# Testing a query result

**URL:** <https://www.ruby-forum.com/t/testing-a-query-result/86697>\
**Category:** Ruby\
**Created:** [February 24, 2007, 7:28pm UTC](https://www.ruby-forum.com/t/testing-a-query-result/86697 "2007-02-24T19:28:09Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![mrom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/4491bb/32.png) [@mrom](https://www.ruby-forum.com/u/mrom)\
**Post date:** [February 24, 2007, 7:28pm UTC](https://www.ruby-forum.com/t/testing-a-query-result/86697/1 "2007-02-24T19:28:09Z")

</div>

Hello every body,

It’s a very basic question, i want just to test if this query did return  
any result.

```
     @BookDetails = Book.find(params[:id])

```

I tried “nil”, but it seems that even if there isn’t any book with that  
id, @BookDetails is != nil.

Help please!

---

<div class="post-metadata">

**Author:** ![mrom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/4491bb/32.png) [@mrom](https://www.ruby-forum.com/u/mrom)\
**Post date:** [February 24, 2007, 7:56pm UTC](https://www.ruby-forum.com/t/testing-a-query-result/86697/2 "2007-02-24T19:56:06Z")

</div>

On Feb 24, 11:28 am, Mahmou M’hiri [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> It’s a very basic question, i want just to test if this query did return  
> any result.
> 
> ```
> @BookDetails = Book.find(params[:id])
> 
> ```

You will probably get better results asking this question on the Ruby  
on Rails discussion forum. You have instead asked it on the ruby-talk  
mailing list.

---

<div class="post-metadata">

**Author:** ![mrom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/4491bb/32.png) [@mrom](https://www.ruby-forum.com/u/mrom)\
**Post date:** [February 24, 2007, 8:11pm UTC](https://www.ruby-forum.com/t/testing-a-query-result/86697/3 "2007-02-24T20:11:56Z")

</div>

that’s true!

---

<div class="post-metadata">

**Author:** ![mrom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/4491bb/32.png) [@mrom](https://www.ruby-forum.com/u/mrom)\
**Post date:** [February 25, 2007, 3:52am UTC](https://www.ruby-forum.com/t/testing-a-query-result/86697/4 "2007-02-25T03:52:54Z")

</div>

The easiest way to do this is using the exists? function.  
Example:

if Book.exists?(params[:id])  
@BookDetails = Book.find(params[:id])  
else  
#No results  
end

---

<div class="post-metadata">

**Author:** ![mrom](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/m/4491bb/32.png) [@mrom](https://www.ruby-forum.com/u/mrom)\
**Post date:** [February 25, 2007, 1:09am UTC](https://www.ruby-forum.com/t/testing-a-query-result/86697/5 "2007-02-25T01:09:46Z")

</div>

Phrogz wrote:

> On Feb 24, 11:28 am, Mahmou M’hiri [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > It’s a very basic question, i want just to test if this query did return  
> > any result.
> > 
> > ```
> > @BookDetails = Book.find(params[:id])
> > 
> > ```
> 
> You will probably get better results asking this question on the Ruby  
> on Rails discussion forum. You have instead asked it on the ruby-talk  
> mailing list.

I actually think that this is an ActiveRecord question. Does this  
qualify for a redirect to rails (even if params[:id] is a good hint)?

I have to admit that I do not know whether rails does change this  
behaviour.

Do we cover ActiveRecord questions on ruby-talk?

To answer the original question:

ActiveRecord will raise an ActiveRecord::RecordNotFound exception which  
you can detect/catch via

begin  
@BookDetails = Book.find(params[:id])  
rescue ActiveRecord::RecordNotFound

# the query did not return a result

end

Stefan
