Carmine Moleti
2006-Jun-13  13:17 UTC
[Rails] Best way to format attributes during visualization/editing
Hi to everyone,
My name''s Carmine and I''m a rails newbie. So, here''s
my newbie question
:)
I have a model with one attribute named "kind" of type integer.
This attribute can assume values within the range [0..5].
Each value has a "verbose" representation e.g.: 0 => grain, 1 =>
liquid
...
To visualize the verbose representation I''ve overridden the default 
attribute''s
accessor as follows:
def kind()
  VERBOSE.index(read_attribute(:kind))
end
This works like a charm.
Now in my editing/inserting view i have this:
<p><label for="grain_kind">Select
Kind</label><br/>
<%= select("grain", "kind", Grain::KINDS, {
:include_blank => true})
%></p>
This piece of code doesn''t work because it tries to call the
"kind"
method of the "grain" object. Normally it expects an integer while now
it returns a string.
So, I have modified the snippet above as follows:
<p><label for="grain_kind">Select
Kind</label><br/>
<%= select("grain", "kind_id", Grain::KINDS, {
:include_blank => true})
%></p>
This has forced me to define other two accessors in the model in order 
to solve the problem:
  def kind_id()
    read_attribute(:kind)
  end
  def kind_id=(value)
    write_attribute(:kind,value)
  end
Now, the question is: Is this a correct way to do this stuff or there''s
something better I could do?
Thanks in advance for your help.
Regards,
Carmine
P.S.:
Of course I could change the attribute''s original type from integer to 
string to
simplify everything (and probably is something I''m going to do).
-- 
Posted via http://www.ruby-forum.com/.
