On Sat, Jan 26, 2013 at 8:58 PM, Linus Pettersson <
[email protected]> wrote:

> Hi!
>
> I have a model which has a field that can have three values only. I store
> the value in the database as an integer, 0, 1 or 2, but when I display it I
> want a more appropriate text. And, I want it to be translatable using i18n.
>
> Let's say that it corresponds to how difficult something is. So, 0
> represents "Easy", 1 represents "Normal" and 2 represents "Hard".
> What I did was first to define it as a hash like this:
> DIFFICULTIES = { "Easy" => 0, "Normal" => 1, "Hard" => 2 }
> Then I can easily pass this to, for instance, simple_form and it will
> generate a nice dropdown with the correct values.
>
> But let's say that I have the value and want to display the text. Then I'd
> have to iterate over the hash to find which key corresponds to the right
> value. Right? Not that big of an issue when there are three values as in
> this example, but there could be more.
>

Use http://www.ruby-doc.org/core-1.9.3/Hash.html#method-i-key to get the
key you want
given a value.

I'm thinking that you will only do this if you have a small number of
constants that you want
to define.  If it is a long list, then use the database for that.


>
> How do you normally handle these cases? Is there any "best practice" to
> handle this in an efficient manner?
>
> Cheers,
> Linus
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msg/rubyonrails-talk/-/1fjJK_EjQ50J.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>



-- 
-------------------------------------------------------------
visit my blog at http://jimlabs.heroku.com

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to