On 21 Sep 2008, at 10:45, Abel wrote:

>
> I don't know about Ruby not having a Time object independent from
> DateTime, as migrations allow for both types of fields in a database
> and they behave differently.
>
Ruby doesn't have a pure time of day class. If you're database have  
time columns then what you get back is a Time object for 1st January  
2000 and the appropriate time.

Fred

> I had a problem similar to yours where Rails insisted in updating Time
> fields with 1st Januray 2000 and it turned out that I was trying to
> input a Date Time value in a Time field (or something similar).
>
> Try changing the type of the database field and see what happens.
>
> On Sep 21, 7:32 am, Dan Manges <[EMAIL PROTECTED]> wrote:
>> ActiveRecord doesn't have the concept of a time independent from a
>> date, which is what it seems like you need. As far as I know, the  
>> Ruby
>> standard library doesn't either. I would use another data type. It
>> looks like in your example the minute is always 0, so you could store
>> only the hour in the database. If you need minute granularity, you
>> could use a decimal data type and use 9.25 for 9:15am, 13.5 for 1:30
>> pm, etc.
>>
>> -Dan Mangeshttp://www.dcmanges.com/blog
>>
>> On Sep 19, 2:33 pm, Jacob Patton <[EMAIL PROTECTED]> wrote:
>>
>>> Hi all,
>>
>>> I'm building an application that will allow store owners to keep  
>>> track
>>> of the opening and closing times of their shops.  For example, a  
>>> store
>>> owner might input that their shop is open Monday, Wednesday, and
>>> Friday from 9am to 5pm.
>>
>>> To keep track of these store hours, I'm using Store and Opening
>>> models, where each store has many openings.
>>
>>> The openings table looks like:
>>> id
>>> day (string -- day of the week, in words)
>>> opens_at (time)
>>> closes_at (time)
>>
>>> It seems that ActiveRecord (2.1.1) insists on appending a bogus date
>>> to the time for inserts & queries.  For example, for a named scope  
>>> to
>>> allow quick searches for whether a store is opened for a given day &
>>> time, I have to use this:
>>
>>>   named_scope :open_for, lambda { |day, time| { :conditions =>["day
>>> = ? AND opens_at <= ? AND closes_at >= ?", day, "2001-00-01 " <<
>>> time.to_s(:time) << ":00", "2000-01-01 " << time.to_s(:time) << ":
>>> 00" ] } }
>>
>>> when I would much prefer something like:
>>
>>>   named_scope :open_for, lambda { |day, time| { :conditions =>["day
>>> = ? AND opens_at <= ? AND closes_at >= ?", day, time, time] } }
>>
>>> Does anyone know of a way to handle time columns more elegantly?
>>
>>> best,
>>
>>> Jacob Patton
> >


--~--~---------~--~----~------------~-------~--~----~
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 rubyonrails-talk@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to