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
“Yes”?
I know you can do it individually but how about all of them?
Cheers
On Jul 23, 8:58 am, Armitage [email protected] wrote:
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
“Yes”?
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:
my_model.activated?
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
that:
def display_activated(model)
model.activated == ‘1’ ? ‘Yes’ : ‘No’
end
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
www.essentialrails.com - 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 ’
Rod
Yep you are absolutely right…
Thanks to both for your input - note to self drink coffee before
posting without fully reading
Thanks again!
On Jul 24, 9:42 am, Shai R. [email protected]
this is exactly what jeff was displaying to you:
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
that:
here you define the method that will change the ‘1’ to a ‘yes’ and the
‘0’ to a ‘no’ string:
def display_activated(model)
model.activated == ‘1’ ? ‘Yes’ : ‘No’
end
u may want to do the middle line as model.activated==false ? ‘no’ :‘yes’
if you store 1’s and 0’s in boolean fields …
and here you call the method, to write the ‘no’ / ‘yes’ according to the
@model.activated value:
<%= display_activated(@model) %>
output would be either ‘yes’ / ‘no’ depending on @model
isn’t this what you want?
hth
On Jul 24, 3:42 am, Shai R. [email protected]
wrote:
this is exactly what jeff was displaying to you:
u may want to do the middle line as model.activated==false ? ‘no’ :‘yes’
if you store 1’s and 0’s in boolean fields …
You can also shorten that line even further to
model.activated? ? ‘yes’ : ‘no’
That seems more clear, no?