Time to stretch.
I want to acheive a find that returns a computed value as a column. I don't know SQL (thanks to Rails hiding me from it up until now) and I don't know if Rails will be able to help. Here's my model.
class Trackable < ActiveRecord::Base has_many :time_entries, :dependent => :destroy has_many :time_chargers, :through => :time_entries, :source => :owner, :uniq => true end
# Of course I can do:
trackables = Trackable.find(:all)
# Now assume that trackables[0].time_chargers # would return 3 people: Fred Flinstone, Wilma Flinstone, Barny Rubble # I can then get how many time_chargers there are by doing:
trackables[0].time_chargers.size # => 3
# I want that value computed by the original SQL query returned from find, so additional queries aren't created. # Further I want to be able to do the same search with conditions added to time_chargers at the time of the find.
# Something like:
trackables = Trackable.find :all, with_scope => "time_chargers.last_name == Flinstone"
# So now I get:
trackables[0].time_chargers.size # => 2
# again without an additional SQL query.
I suppose if I have to dive down to SQL that's ok, but mixing Rails generated SQL and hand crafted SQL feels so wrong. That's and I don't really know SQL. Where should I begin?
Ryan