monster method (too hard for my skill level)

I need to write a method for calculating the fee for medical procedures with respect to area. I have all the tables and data but its hard to give that here. Can someone take a look at this 'stub' method and help me out?

  def calculate_fee # strip out the first 3 numbers of the user entered zip code # use those 3 numbers to identify row in [zipcodes table] (between upper and lower zip code columns)) # identify 'RVS ID' from that row # identify the 'geographic zip area' from that row

# query on user entered procedure description using [procedures table] to identify 'procedure code' # use previously obtained 'RVS ID' and 'Procedure code' to get 'Relative value' from [relative values table]

# use previously obtained 'geographic zip area' and 'procedure code' to identify 'percentile' from # [geographic factors table] # use formula (Percentile / 1000) x (Relative Value / 100) to calculate fee

  end

anything in quotes is a column from one of my tables and anything in brackets is a table. I know this is a tough scenario without seeing the tables but any help would be a start and I can answer any questions if you are trying to help.

THANK YOU

Without any idea of your schema I'm completely stabbing in the dark here. but...

def calculate_fee   # strip out the first 3 numbers of the user entered zip code   zip = params[:id].first(3)   # use those 3 numbers to identify row in [zipcodes table] (between upper and lower zip code columns))   @zip = ZipCode.find(zip)   # identify 'RVS ID' from that row ## You don't need to do this, you can get it through the object @zip.rvs_id (or whatever the column is really called)   # identify the 'geographic zip area' from that row ## Same as above.   # query on user entered procedure description using [procedures table] to identify 'procedure code'   @procedure = Procedure.find_by_procedure_code(params[:procedure] [:code]) # This param depends on your form your posting in from?   # use previously obtained 'RVS ID' and 'Procedure code' to get 'Relative value' from [relative values table]   @relative_value = RelativeValue.find(:first, :conditions => ['rvs_id = ? AND procedure_code = ?', @zip.rvs_id, @procedure.procedure_code]) # But what does this return I don't what your objects return mate.   # use previously obtained 'geographic zip area' and 'procedure code' to identify 'percentile' from [geographic factors table]   @percentile = GeographicFactor.find(:first, :conditions => ['geographic_zip_area = ? AND procedure_code = ?', @zip.geographic_zip_area, @procedure.procedure_code])   use formula (Percentile / 1000) x (Relative Value / 100) to calculate fee   return (@percentile.(some attribute) / 1000) * (@relative_value. (some attribute) / 1000) end

how do you do this...

# identify 'RVS ID' from that row ## You don't need to do this, you can get it through the object @zip.rvs_id (or whatever the column is really called)

I understand that each row is an object, so it makes sense - just not sure how to execute

The code is there, to get the column, just use the accessor for that column like this:

@zip.rvs_id

of course, that assumes that is the column name, if it is named something else, just sub it for rvs_id.

-Bill

agilehack wrote:

this confuses me...

@zip = ZipCode.find(zip)

where @zip is the first 3 digits of a zipcode the table is zipcodes the model zipcode

so i understand @zip = Zipcode.find(zip) is attempting to look for zip in the zipcodes table via the model zipcode

however i need to compare my 3 digit zip (@zip) againt two columns in the table column 1 - zipstart column 2 - endzip

i need to find the row that my @zip falls inside the values of those two columns, so i believe this line of code is too simple

example might be @zip = 034 startzip = 032 and endzip =037 in the table i need to identify that row

can anyone help?

@zip = ZipCode.find(:all, :conditions => ["startzip <= ? AND endzip