Need a optimized version of this

The rails version is 2.3

I have a relation offers hm prices

In the prices table a have a column named well base_price, + promotion
and last_minute

The prices for one offer can have promotion checked or last_minute
checked indicating that the current price is a promotion or last
to find out if a offer is a promotion or last_minute, and view that in
the search results I need to get the lowest price from prices
belonging to the offer and check if its marked last_minute or
promotion right now I'm doing this way

to find promotions
Offer.all(:conditions=>{:published=>true}).collect {|c|
      offers << c if c.min_price.promotion?

and I know this is counter productive way of searching but I couldn't
find a way to do that, my best guess was to use pure SQL but then I'm
not that good at it (i was going for something find all where
base_price is minimum and promotion is checked | last_minute is
checked and group it by offer_id).

any help would be appreciated