All, I posted this over on comp.lang.ruby, but realized I should probably keep Rails questions to this group, so soory for the cross-post.
I have a rails app with a Transaction class that has_many :entries. Each Transaction has many entries, and those with the debit attribute true are debits, false are credits. It starts like this. class Transaction < ActiveRecord::Base has_many :entries has_many :debits, :class_name => 'Entry', :conditions => {:debit => true} has_many :credits, :class_name => 'Entry', :conditions => {:debit => false} end I want to be able to complete an Transaction if there is exactly one Entry that has its amount set to nil. I want to set that amount to a debit or credit of the proper amount to make the Transaction balance. Sounded easy to me, but I am having trouble with my balance! method. The relevant part of it is: def balance! ... if num_nils == 1 # Set the sole nil entry to amount needed to balance Transaction plug = debit_total - credit_total entries.where(:amount => nil).each do |e| e.amount = plug.abs e.debit = (plug < 0) e.save end end The problem is that when I finish this, the entries associated with my Transaction are not affected. I appears to make a copy, change it, and leave the Entry associated with my Transaction with a nil amount. What am I missing? Thanks, Dan Doherty -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.