On 15 November 2012 08:09, Mauro <[email protected]> wrote: > On 14 November 2012 22:21, Colin Law <[email protected]> wrote: >> On 14 November 2012 21:07, Mauro <[email protected]> wrote: >>> I have a model Reservation with reserved_from and reserve_to >>> attributes of type date. >>> I want create a scope of all reservations where Date.today is between >>> reserved_from and reserved_to. >>> In the model I've done: >>> >>> def self.today_reservation >>> find_each do |res| >>> if (Date.today).between?(res.reserved_from, res.reserved_to) >>> return >>> else >>> puts "false" >>> end >>> end >>> end >>> scope :today_reservations, today_reservation >>> >>> but it doesn't work. >>> If reserved_from is 2012-11-01 and reserved_to is 2012-11-02 and >>> Date.today is 2012-11-14 the method above method return an >>> activerecord relation. >> >> That is not how scopes work. You need something like (not tested) >> scope :today_reservations, lambda { where("reserved_from > ? and >> reserved_to <= ?", Date.today, Date.today ) } > > Without lamda it's the same thing? > scope :today_reservations, where("reserved_from > ? and >> reserved_to <= ?", Date.today, Date.today ) works the same.
No it doesn't. Well it does today but if you don't restart the server then it won't work tomorrow. Without the lambda it is determining Date.today only once when it loads that line of code. You need the lambda so that it recalculates it every time you run the scope. Colin > > -- > 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 https://groups.google.com/groups/opt_out. > > -- 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 https://groups.google.com/groups/opt_out.

