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
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.
www.essentialrails.com - 2-Day Rails training for beginners. Rails
made simple. And fun.
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....
Thanks to both for your input - note to self drink coffee before
posting without fully reading
You can also shorten that line even further to
model.activated? ? 'yes' : 'no'
That seems more clear, no?