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 ) }

I expect there is a neater way to do it.  Make sure your automated
tests check it on the end points of the range.

Colin


> Some advice?
> Thank you.
>
> --
> 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.


Reply via email to