For database columns that are integers that “represent” strings, what is the best way to show the string value in the view?
For example, if I collect “payment_method” values as integers in my form as follows:
<%= f.select :payment_method, { "Visa" => "1", "Mastercard" => "2", "Amex" => "3"} %>
How can I show the saved integer as a string in my view files? What can I add to my model, so that
<%= @relevantvariable.payment_method %>
or something similar returns string values like “Visa”, “Mastercard” or “Amex” instead of their respective integer values?
Thanks much for handling such a basic question!
Either don’t use an integer value, and store the payment method directly as a string in the db, or create a PaymentMethod model.
With the association set up, you’d be able to refer to the name of the payment method as so:
Don’t try to manually handle lists of names / ids – that will quickly get unmanageable.
Edit: after reading your comment, if you went with the first option and stored a string in the table, definitely don’t allow the user to type the value directly, maintain a list on the model (or similar), that you seed your dropdown from, that way you’re still constraining the possible values. You could even add a custom validator if you want to be certain what you putting in the database.