Tricky design problem (collection_select and Javascript)

Im cornered with this problem in one of my apps. Let me define the
models first.

Paycheck has_one salstruct, :class_name => ‘Salary_Structure’
Paycheck belongs_to employee
Adjustment #a model for additions/deductions that do not fall into the
normal Salary Structure and are last minute add-ons to the Paycheck.
eg, Christmas bonus.

The Adjustments table has the columns Name (string) and Value (integer
in terms of percentage).

I allow 2 Adjustments for every Paycheck. The paycheck table has the
columns Adj_1 (string), Adj_2 (string), Adj_1_value (float),
Adj_2_value (float).

There is no association between Paycheck and Adjustment.

In the _paycheck partial (used for both editing and creating
paychecks) , I use the following code.

<%= f.collection_select :adj_1, current_user.adjustments.find
(:all) , :value, :name, {:include_blank=>true, :id =>
“paycheck_adj_1”},{:onblur => ‘calculate();’} %>%

This code lets the user select the Adjustment by its name (say,
Christmas bonus, Leave Deduction, etc), but I have set the value that
gets into the DB as the ‘value’ attribute of the adjustment. I have
done this because i am using Prototype to perform some calculations on
the values of the adjustments chosen.
The following are my requirements,

  • the ‘name’ attribute of the adjustment chosen by the user, should go
    into paycheck_adj_1/paycheck_adj_2 respectively.
  • the Prototype JS function ‘calculate()’ uses the ‘value’ attribute
    of the chosen adjustment in the form of DOM_ID.value. Preferably, I
    should not have to hack into that code too much as its working great
    right now. And the results of these calculations are stored in
    paycheck_adj_1_value/paycheck_adj_2_value respectively.
  • If the User chooses to delete an Adjustment at any time from the
    Adjustments table, It should not affect the Adjustments data stored
    for issued Paychecks (which is why I have designed the DB the way I
    have)

Now, although I think Ive got the 3rd requirement covered, the first
two pose a problem in that I cant think of a way to satisfy both
simultaneously. I do hope though, that some of you can help me resolve
this problem. Will gladly explain more in detail if needed.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs