Here's the situation...

:customer has_many :billing_windows
:billing_window belongs_to :customer

A billing_window can either be open or closed (it is considered open
until its closed_on attribute is set to a datetime).  I'm trying to
refactor the class method on Customer that finds all customers with at
least 1 open billing_window.  Currently it looks like this...


def self.has_open_billing_window
  set = []
  Customer.find(:all).each do |customer|
    set << customer if customer.billing_windows.find(:all, :conditions
=> [:open => true]).size > 0
  end
  set
end


For obvious reasons, this is horribly inefficient so I have refactored
that code to:

def self.has_open_billing_window
  Customer.find(:all, :joins => :billing_windows, :conditions =>
"billing_windows.closed_on IS NULL")
end


This definitely seems cleaner but I don't like the fact that the
conditions clause is specific to the database query language.  Does
anyone know a better way to accomplish this?

Bob

-- 
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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to