在Rails中,关闭指定列的时区转换

时间:2012-10-15 17:00:26

标签: ruby-on-rails-3 timezone

非常简单,我需要禁用特定列的时区转换。我将手动处理任何TZ转换,但我需要Rails 3来放弃读取以及任何AREL功能的转换。但是,我不想禁用非指定属性的转换。

好的,我知道如何禁用它进行阅读:

self.skip_time_zone_conversion_for_attributes = [:test_timestamp]

但这仅适用于阅读。在编写属性时,它仍然会转换为UTC(是的,我在3.2.8中对此进行了测试)。

1 个答案:

答案 0 :(得分:0)

正如您所说,from lxml import html import requests url = 'http://www.amazon.com/dp/B00SGGQRNO' response = requests.get(url) tree = html.fromstring(response.content) bullets = tree.xpath('//span[@class="strings"]/text()') print ('Bullets: ',bullets) 仅适用于阅读,这使整个功能毫无用处。

有两种可能的解决方案:

1 .- 接受有时会用UTC写的,并相应阅读:

skip_time_zone_conversion_for_attributes
使用def starts_at # override reader method attributes['starts_at'].in_time_zone(whatever_timezone) end

时,

缺点:覆盖方法已被修改

2 .- 将时间值存储为字符串,负责以正确的格式写入值,并在所需的时区中读取它们。

MyModel.pluck(:starts_at).

缺点:一个人失去了使用日期运算符(小于,大于)查询数据库的能力。