I have two models User and Event. The cardinality is one User has many Events. When I query the database to give me all the users and their corresponding events it returns t
Something along these lines should work:
# Rails 3
User.includes(:events).where(:events => {:created_at => Time.now.midnight..Time.now.tomorrow.midnight})
# Rails 2
User.find(:all, :includes => :events, :conditions => ["events.created_at between ? and ?", Time.now.midnight, Time.now.tomorrow.midnight])
Time.now.tomorrow.midnight
is pretty nasty. 1.day.from_now.midnight
may be slightly less nasty, depending on your preference ;)
To my knowledge, you can't use the :include option in the way you describe.
What is your problem with getting all the events anyway? You will have to load/join/query the events table anyway. You will need more memory, though, if you instanciate all events.
Of course you could do two queries, one for the users with the events "today", and one for those without.
You could also go the other way round:
Event.find(:all, :conditions => "...only today...", :include => :user)
Which would give you all events for today with users included. You can use another query to get all users without including the events, and do the rest in memory.