Case of If?

Hi All

Just pondering how you would write a statement to convert all the
output of a database.

That is if you had yes/no fields stored as 1's and 0's could you write
a simple statement to iterate though all of them and change the 1 to a

I know you can do it individually but how about all of them?


You can do the equivalent of a SQL UPDATE command by using update_all:

MyModel.update_all "myfield = Yes", "myfield = 1"

BUT, why would you do this? Leaving it as one/zero gives you some
free behavior in your model. Let's say your column is called
'activated' or something like that. Leave it as 1/0 and you can do:


This will return true if it's a 1, false otherwise.

If you need to display "yes" or "no" somewhere in a view, and that's
why you're changing the data, then you can write a helper method to do

def display_activated(model)
  model.activated == '1' ? 'Yes' : 'No'

and then in your view:

<%= display_activated(@model) %>

But again, I'm not sure why you need to change the data, so my
suggestions may or may not be appropriate...? Let me know.

Jeff - 2-Day Rails training for beginners. Rails
made simple. And fun.

Hi Jeff

Thanks for your response
I don't think I was terribly clear I am afraid, I dont want to change
the output in the database but in the html table I am outputting. I am
storing the Yes/No values as Zeroes and Ones and just wondered how you
would write some sort of global method to say where you see a '0'
writer 'No '


Yep you are absolutely right....

<slightly embarrassed>

Thanks to both for your input - note to self drink coffee before
posting without fully reading

Thanks again!

You can also shorten that line even further to

model.activated? ? 'yes' : 'no'

That seems more clear, no?