Определите, какие модели будут преобразованы в конфигурацию часового пояса activerecord - PullRequest
2 голосов
/ 01 декабря 2011

Я ищу способ использования конфигурации часового пояса ActiveRecord только в некоторых моделях, или способ отключить его в некоторых ненужных мне методах.

Примерно так:

Модели User, Access, Sale используют тот же часовой пояс, что и application.rb: config.time_zone = "xxxx"

, но в моделях Lap, CheckIn для них не используется настройка часового пояса или UTC.

Я думал об использовании метода after_initialize, который очищает конфигурацию time_zone и что-то вроде * after_free * (я знаю, что он не существует) для возврата настройки часового пояса из старого настроенного значения.

Разве это не простой способ сделать это?

Ответы [ 2 ]

6 голосов
/ 13 апреля 2013

Если вы хотите сделать это для конкретной модели или для определенных полей в конкретной модели, метод, описанный в этом посте , сработал для меня.

# Turn it off for just some columns
class Picture < ActiveRecord::Base
 def self.skip_time_zone_conversion_for_attributes
   [:created_at, :published_at]
 end
end

# Turn it off for the whole model
class Picture < ActiveRecord::Base
  def self.time_zone_aware_attributes
    false
  end
end

И если это поможет, вот мой тестовый пример:

before :all do
  @current_tz = Time.zone
  # Test usually runs in UTC; test this as if in production, per config/application.rb
  Time.zone = 'Pacific Time (US & Canada)'
end

after :all do
  Time.zone = @current_tz
end

it 'should report UTC time as UTC time' do
  new_obj = MyModel.create(start_time: DateTime.new(2013, 3, 31, 0, 0, 0, 0))
  new_obj.reload
  new_obj.start_time.to_s.should == 'Sun, 31 Mar 2013 00:00:00 +0000'
end
1 голос
/ 10 февраля 2012

Это это то, что вы ищете?

Надеюсь, это поможет.

РЕДАКТИРОВАТЬ: попробуйте выполнить что-то вроде этого: На вашем

class Lap < ActionController::Base
 before_filter :remove_time_zone

 def remove_time_zone
  ActiveRecord::Base.time_zone_aware_attributes = false
 end
end

ИЛИ:

Lap.time_zone_aware_attributes = false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...