Join many models to update a field of one model using attributes from another model non related directly

Hi people

I have a problem trying to update an attribute of one model using the
value from another model, but those two models are not related.

My models are:

class Order < ActiveRecord::Base
  has_many :order_details
  has_many :waybills

class OrderDetail < ActiveRecord::Base
  belongs_to :order, :foreign_key => "order_id"
  belongs_to :product, :foreign_key => "product_id"

class Waybill < ActiveRecord::Base
  has_many :purchases
  belongs_to :order, :foreign_key => 'order_id'

class Purchase < ActiveRecord::Base
  belongs_to :waybill, :foreign_key => 'waybill_id'
  has_many :detail_purchases

class DetailPurchase < ActiveRecord::Base
  belongs_to :purchase, :foreign_key => 'purchase_id'
  belongs_to :product, :foreign_key => 'product_id'

So, as you can see... a "DetailPurchase" belongs to an "Order", but in
an indirect way. And an "OrderDetail" belongs to an "Order" directly.

I need to update the attribute "quantity" of the product of
"OrderDetail" using the attribute "quantity" of the product of

The idea is the "new" OrderDetail.quantity = "old"
OrderDeatil.quantity - DetailPurchase.quantity (and obviously the
product_id has to be the same)

So, i don't know how to "write" the query using the "rails way" (could
be "Model.find()", "Model.where()", "Model.update_attribute()") or
just use a raw sql query (by the way, I don't know how to write or
execute raw sql queries)

What do you recommend? Thanks