The illustration is like this:
class Product
end
class SalesOrder
belongs_to :product
belongs_to :customer
att_accessor :deliverable
# give all sales orders that are deliverable because the stock is ready
# and also assign deliverable
def self.calculate_deliverable
all_so = SalesOrder.find(:all, :order => 'input_date asc')
# some calculations and assigning to self.deliverable
end
end
class Customer
has_many :sales_orders
has_many :products, :through => sales_orders
end
If i call:
SalesOrder.calculate_deliverable
the value assigned in deliverable is correct, it only display all the sales orders that is ready.
But if i call:
c = Customer.find(1)
c.sales_order.calculate_deliverable
only sales order related to customer 1
will be displayed (good so far), but the value of @deliverable is not calculated properly from the whole sales orders, but only subset which belongs to customer 1
.
What i want to do is:
SalesOrder.calculate_deliverable
will do the same calculation as c.sales_order.calculate_deliverable
(not a subset only). Is it possible? and how.
Note: it seems that this query: SalesOrder.find(:all, :order => 'input_date asc')
if called from customer will have additional conditions to find only for that customer