Unused composed_of bits


#1

I implemented a Temperature model for my application. It is pretty
basic,
composed of a temperature, a unit and some conversion methods. In my
app model
I decided to store temperature values in Fahrenheit, so there is no need
to
remember the units between invocations. I am having a little trouble
composing
my app model.

A little bit of my temperature class:

class Temperature

Composed of a float with 1 sig fig and units of Celsius, Fahrenheit or

Kelvin

Implements to_s, to_html and a number of conversions and bang

conversions

attr_reader :temp, :units

def initialize( temperature, units = “F” )
unless valid_units?(units)
units = “F”
end
@temp = temperature = ((10 * temperature).to_f.round)/10.0
@units = units.upcase
end

def to_c
convert_to(“C”)
end
… etc.

So in my app model:

class Profile < ActiveRecord::Base
composed_of :temperature, :class_name => Temperature,
:mapping => [ :temp, :temp ]

def before_save
self.temperature.to_f!
end

The table corresponding to Profile has a column named temp. What
happens to
the units? Is it merely ignored?

When I navigate to /profiles/new I get:

undefined method `temperature.temp’ for #Profile:0xb7395660

Extracted source (around line #10):

7:
8:


9: Temperature
10: <%= text_field ‘profile’, ‘temperature.temp’ -%>°

Controller:
def new
@profile = Profile.new
@profile.temperature = Temperature.new(0)
render :layout => !request.xhr?
end

How do I create a text_field for just the temp part of the Temperature
object?
Or should I just cut to the chase and do a <%= text_field ‘profile’,
‘temp’
%> and create the Temperature object in the controller?

Regards,
–Dean - Unscrambler of eggs

Take your time, take your chances
[3278.7 km, 273.4] Apparent Rennerian

It matters not how strait the gate / How charged with punishment the
scroll
I am the master of my fate / I am the captain of my soul. – Invictus

                                                     -- William E 

Henley –