I am a ruby on Rails Novice and I am having an extremely frustrating problem - not sure whether acts_as_tree plug in is causing this or not (or me lacking a fundamental misunderstanding of rails)
I have the following table schema:
create_table "destinations", :force => true do |t| t.string "name" t.string "description" t.integer "commissions_rate", :default => 0 t.integer "destinations_count", :default => 0 t.integer "position" t.datetime "created_at" t.datetime "updated_at" end
and model def:
class Destination < ActiveRecord::Base attr_accessible :id, :name, :parent_id, :centre_longitude, :centre_latitude, :commissions_rate, :position, :startzoom, :description, :destinations_count
acts_as_tree :counter_cache => true
end
I am trying to adjust the update method in my controller so that if the parent commissions_rate is modified the "children" records of the parent are automatically updated with this value, code as follows:
def update @destination = Destination.find(params[:id]) @rate = @destination.commissions_rate || 0 @children = @destination.children if (@destination.destinations_count > 0) for child in @children do child.commissions_rate = @rate end end respond_to do |format| if @destination.update_attributes(params[:destination]) flash[:notice] = 'Destination was successfully updated.' ......... end
The form only send data for the parent model (not using nested model)
Everything works when I test the above code in the Rails console however when running the server the children are failing to have the commission_rate variable updated. Would appreciate any help anyone can provide me.
Thanks
David