# Elementary "OR" question

**URL:** <https://www.ruby-forum.com/t/elementary-or-question/144357>\
**Category:** Rails\
**Created:** [July 28, 2008, 11:29pm UTC](https://www.ruby-forum.com/t/elementary-or-question/144357 "2008-07-28T23:29:05Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![newrubygirl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e274bd/32.png) [@newrubygirl](https://www.ruby-forum.com/u/newrubygirl)\
**Post date:** [July 28, 2008, 11:29pm UTC](https://www.ruby-forum.com/t/elementary-or-question/144357/1 "2008-07-28T23:29:05Z")

</div>

I know this is super basic, but I need some help.

In my view, which displays a form, if a field is nil or if there are  
errors when the form is submitted, display “A”, otherwise, display “B”.

I can’t figure out how to test for condition 1 OR 2. Instead the code  
always executes “A”.

Sample code looks like this:  
\<% if model.field.nil? or model.errors %\>  
\<%= A %\>  
\<% else %\>  
\<%= B %\>  
\<% end %\>

Any thoughts?

Thanks!!!

---

<div class="post-metadata">

**Author:** ![newrubygirl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e274bd/32.png) [@newrubygirl](https://www.ruby-forum.com/u/newrubygirl)\
**Post date:** [July 28, 2008, 11:33pm UTC](https://www.ruby-forum.com/t/elementary-or-question/144357/2 "2008-07-28T23:33:20Z")

</div>

Hi –

On Mon, 28 Jul 2008, Becca G. wrote:

> \<% if model.field.nil? or model.errors %\>  
> \<%= A %\>  
> \<% else %\>  
> \<%= B %\>  
> \<% end %\>
> 
> Any thoughts?

model.errors will return an Errors object, even if it’s empty. So it  
will always be true in the ‘if’ clause context. You’d probably want to  
do model.errors.empty?

David

–  
Rails training from David A. Black and Ruby Power and Light:

- Advancing With Rails August 18-21 Edison, NJ
- Co-taught by D.A. Black and Erik Kastner  
See [http://www.rubypal.com](http://www.rubypal.com) for details and updates!

---

<div class="post-metadata">

**Author:** ![newrubygirl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e274bd/32.png) [@newrubygirl](https://www.ruby-forum.com/u/newrubygirl)\
**Post date:** [July 29, 2008, 12:04am UTC](https://www.ruby-forum.com/t/elementary-or-question/144357/3 "2008-07-29T00:04:57Z")

</div>

On Jul 28, 2008, at 5:29 PM, Becca G. wrote:

> Sample code looks like this:  
> \<% if model.field.nil? or model.errors %\>

You’ll always get at least an empty array from model.errors

\<% if model.field.nil? || model.errors.size \> 0

> \<%= A %\>  
> \<% else %\>  
> \<%= B %\>  
> \<% end %\>
> 
> Any thoughts?
> 
> Thanks!!!

I also tend to use || rather than or in this type of expression so the  
ultra-low precedence of ‘or’ doesn’t cause seemingly odd behavior at  
times. (Of course, I worked in C for many years so || just seems  
natural.)

-Rob

Rob B. [http://agileconsultingllc.com](http://agileconsultingllc.com)  
removed\_email\_address@domain.invalid

---

<div class="post-metadata">

**Author:** ![newrubygirl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e274bd/32.png) [@newrubygirl](https://www.ruby-forum.com/u/newrubygirl)\
**Post date:** [July 28, 2008, 11:58pm UTC](https://www.ruby-forum.com/t/elementary-or-question/144357/4 "2008-07-28T23:58:53Z")

</div>

David A. Black wrote:

> > Any thoughts?
> 
> model.errors will return an Errors object, even if it’s empty. So it  
> will always be true in the ‘if’ clause context. You’d probably want to  
> do model.errors.empty?

Thank you so much! I didn’t realize that. Works like a charm now.

---

<div class="post-metadata">

**Author:** ![newrubygirl](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/e274bd/32.png) [@newrubygirl](https://www.ruby-forum.com/u/newrubygirl)\
**Post date:** [July 29, 2008, 12:30am UTC](https://www.ruby-forum.com/t/elementary-or-question/144357/5 "2008-07-29T00:30:07Z")

</div>

Hi –

On Mon, 28 Jul 2008, Rob B. wrote:

> > always executes “A”.
> > 
> > Sample code looks like this:  
> > \<% if model.field.nil? or model.errors %\>
> 
> You’ll always get at least an empty array from model.errors

Strictly speaking, it’s an ActiveRecord::Errors object, not an array.  
But it has strongly array-like inclinations 🙂

David

–  
Rails training from David A. Black and Ruby Power and Light:

- Advancing With Rails August 18-21 Edison, NJ
- Co-taught by D.A. Black and Erik Kastner  
See [http://www.rubypal.com](http://www.rubypal.com) for details and updates!
