This project is archived and is in readonly mode.

Bind Lambdas in :conditions
Reported by Ben Sandofsky | June 16th, 2008 @ 10:44 AM
Let's say you want to find records based on the current time.
def find_within_last_week(*args)
  with_scope(:find => {:conditions => ['assignments.created_at > ?', 7.days.ago.to_s(:db)} do
    find(*args)
  end
end
Except, that time statement will be evaluated when the class is first loaded, which quickly makes it useless. The less-than-documented solution used to be
['assignments.created_at > ?', '#{7.days.ago.to_s(:db)']
But that's just silly when ruby has lambdas. With this patch, you can write:
def find_within_last_week(*args)
  with_scope(:find => {:conditions => ['assignments.created_at > ?', lambda {7.days.ago.to_s(:db)}} do
    find(*args)
  end
end
Comments and changes to this ticket
- 
            
         Alex MacCaw June 16th, 2008 @ 11:42 AMAt the moment you can do: named_scope :last_week, lambda { ({:conditions => ['assignments.created_at > ?', 7.days.ago.to_s(:db)]}) } I agree, the normal find should have the same functionality +1 
- 
            
         Yaroslav Markin June 16th, 2008 @ 01:45 PMI am SO +1 on this. As Alex mentioned, named_scope already has this. Probably it will be possible to merge this stuff on the way to 3.0 
- 
            
        
- 
         Pratik July 2nd, 2008 @ 02:40 AM- State changed from new to incomplete
- Tag set to activerecord, patch, verified
- Assigned user set to Pratik
 Can you please add a test case which will fail for non-lambda version. I tried changing test included in the patch to use "with_scope(:find => {:conditions => ['companies.id = ?', @@count = @@count + 1]})" and the tests passed. Thanks. 
- 
         Pratik August 3rd, 2008 @ 02:59 PM- State changed from incomplete to wontfix
 Closing till further progress. 
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
<h2 style="font-size: 14px">Tickets have moved to Github</h2>
The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>
 Alex MacCaw
      Alex MacCaw
 Pratik
      Pratik
 Yaroslav Markin
      Yaroslav Markin