কীভাবে রেলগুলিতে সক্রিয় রেকর্ডের জন্য ডিফল্ট টাইমজোন পরিবর্তন করবেন?


140

আমার মধ্যে application.rbআমি নীচের মন্তব্য জুড়ে এসেছি

# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
 config.time_zone = 'Eastern Time (US & Canada)'

আপনি উপরে থেকে দেখতে হিসাবে, আমি config.time_zoneEST সময় করতে হবে। তবে, তবুও যখন ডিবিতে রেকর্ডগুলি তৈরি করা হয়, মনে datetimeহয় এটি ইউটিসি ফর্ম্যাটে সঞ্চিত রয়েছে।

উপরের মন্তব্যে তারা বলেছে

... এবং এই অঞ্চলে অ্যাক্টিভ রেকর্ডকে স্বয়ংক্রিয় রূপান্তর করুন ...

আমি কীভাবে এটি করতে পারি এবং কোথায়?

এছাড়াও, আমি এটি হিরকুতেও স্থাপন করব এবং আমি সেটিংসটি সম্পাদন করতে চাই


মাইএসকিউএলে ডেটটাইম হ'ল টাইমজোন-কম টাইপ। অর্থাৎ এটি আপনি যে কোনও সময় অঞ্চলে থাকতে পারেন। আপনি যদি এটি ইউটিসি হিসাবে ব্যবহার করেন তবে তা ঠিক আছে। যদি কেউ আপনার ডাটাবেসটি সরাসরি দেখছে এবং এর অর্থ অন্যভাবে ব্যাখ্যা করে থাকে তবে সাবধান হন।
ভানুয়ান

উত্তর:


199

আমি এই উত্তরটি সংকলন করার সিদ্ধান্ত নিয়েছি কারণ অন্য সমস্তগুলি অসম্পূর্ণ বলে মনে হচ্ছে।

config.active_record.default_timezone ডাটাবেস থেকে তারিখ এবং সময়গুলি টেনে আনার সময় টাইম.লোকাল (যদি সেট করা হয়: স্থানীয়) এবং টাইম ডটক (যদি সেট করা থাকে: utc) ব্যবহার করবেন কিনা তা নির্ধারণ করে। ডিফল্ট হ'ল: ইউটিসি। http://guides.rubyonrails.org/configuring.html


আপনি যদি রেলের সময় অঞ্চল পরিবর্তন করতে চান তবে ইউটিসি - তে ডাটাবেসে অ্যাক্টিভ রেকর্ড সংরক্ষণ চালিয়ে যান , ব্যবহার করুন

# application.rb
config.time_zone = 'Eastern Time (US & Canada)'

আপনি পরিবর্তন করতে চান তাহলে পাগল সময় অঞ্চল এবং আছে সক্রিয় রেকর্ড এই টাইমজোনে, ব্যবহারে দোকান বার

# application.rb
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local

সতর্কতা : ইউটিসিবিহীন বিন্যাসে ডাটাবেসে সময় সাশ্রয়ের আগে আপনার সত্যিই দুবার, এমনকি তিনবার চিন্তা করা উচিত।

দ্রষ্টব্য
সংশোধন করার পরে আপনার রেল সার্ভার পুনরায় চালু করতে ভুলবেন না application.rb


মনে রাখবেন যে config.active_record.default_timezoneমাত্র দুটি মান নিতে পারে

  • : স্থানীয় (সংজ্ঞায়িত টাইমজোনকে রূপান্তর করে config.time_zone)
  • : ইউটিসি (ইউটিসি তে রূপান্তরিত)

আপনি কীভাবে সমস্ত উপলভ্য সময় অঞ্চলগুলি খুঁজে পেতে পারেন তা এখানে

rake time:zones:all

5
এটি সবচেয়ে সম্পূর্ণ / নির্ভুল উত্তরের মতো বলে মনে হচ্ছে - @ সর্বমহলে
এজিক্স

2
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি আরও সম্পূর্ণ।
এনরিক মোরেনো তাঁবু

@ Mihai-AndreiDinculescu কি আপনি কি মনে করেন সঞ্চয় করতে উত্তম datetimeমান ইউটিসি ডাটাবেসের মধ্যে এবং তারপর শুধু তাদের পরিবর্তন ফ্রন্টএন্ড মতো moment.jsবা কি আপনি কোনো ব্যবহারকারীর জন্য সঠিক সময় অঞ্চলে এই তথ্য প্রদর্শন করার জন্য সুপারিশ করবেন?
alexventuraio

@ অ্যালেক্সভেনচুরা হ্যাঁ, আমার চেয়ে বেশি বুদ্ধিমান লোকেরা অনেক দিন আগেই একমত হয়েছিল যে ইউটিসিতে তারিখগুলি সংরক্ষণ করা সবচেয়ে ভাল উপায়।
মিহাই-আন্দ্রেই ডিনকুলেসু

হ্যাঁ আমি পেয়েছি। তবে বিভিন্ন সময় অঞ্চল সহ যে কোনও ব্যবহারকারীর জন্য সঠিক মানগুলি দেখানোর জন্য রেল ভিউগুলিতে আপনি কী প্রয়োগ করার পরামর্শ দিচ্ছেন?
alexventuraio

187

application.rbকাজ নিম্নলিখিত অনুসরণ

 config.time_zone = 'Eastern Time (US & Canada)'
 config.active_record.default_timezone = :local # Or :utc

59
এটি আমার সাথে এটি নিয়ে কাজ করছে:config.time_zone = 'London' config.active_record.default_timezone = :local
ডিন পেরি

41
আপনি এটি চালিয়ে সমস্ত সময় অঞ্চল দেখতে পারবেন rails c-ActiveSupport::TimeZone.all.map(&:name)
ডিন পেরি

5
অনেক ধন্যবাদ! আমিও এর সাথে লড়াই করে যাচ্ছিলাম। আমার একটি উত্তরাধিকারসূত্রে প্রাপ্ত উত্তরাধিকার পিএইচপি অ্যাপ্লিকেশন রয়েছে যা একই মাইএসকিএল ডাটাবেসের সাথে ইন্টারেক্ট করে এবং স্থানীয় হিসাবে সর্বদা সঞ্চয় করে; ইউটিসি ব্যবহারের জন্য এটি আপডেট করা কোনও বিকল্প ছিল না। যা আমি পূর্বে কিছুই অর্জন করতে পারি নি: config.time_zone = 'Central Time (US & Canada)' config.active_record.default_timezone = 'Central Time (US & Canada)' তবে এটির জন্য সেটিংস: স্থানীয় প্রতীকটি কৌশলটি করেছে।
ম্যাট হুক 21

8
রেল গাইডরা বলে যে config.active_record.default_timezoneএটি কেবলমাত্র সেট করা উচিত :localবা :utc। আমি ধরে নিয়েছি যে অন্য কোনও কিছুর অপ্রত্যাশিত ফলাফল হবে।
কেলভিন

2
আপনি এটিকে চালিয়ে সমস্ত টাইম অঞ্চল দেখতে পারবেনrake time:zones:all
অরল্যান্ডো

34

আমি অনেক যন্ত্রণার পরেও ডিন পেরির মতো একই সিদ্ধান্তে পৌঁছেছি। config.time_zone = 'Adelaide'এবং config.active_record.default_timezone = :localবিজয়ী সংমিশ্রণ ছিল। প্রক্রিয়া চলাকালীন আমি যা পেয়েছি তা এখানে ।


5
এটি সঠিক উত্তর, ডিফল্ট_টাইমজোন কেবল গ্রহণ করে: স্থানীয় বা: ইউটিসি
ফ্রেঞ্চেস্কো

20

আমার ক্ষেত্রে (রেল 5), আমি আমার 2 টি লাইন যুক্ত করে শেষ করেছি app/config/environments/development.rb

config.time_zone = "Melbourne"
config.active_record.default_timezone = :local

এটাই! এবং মেলবোর্ন সঠিকভাবে পড়েছে তা নিশ্চিত করার জন্য, আমি আমার টার্মিনালে কমান্ডটি চালিয়েছি:

bundle exec rake time:zones:all

এবং মেলবোর্ন আমি যে টাইম জোনে আছি তাতে তালিকাভুক্ত ছিল!


আমি যদি প্রতিটি ব্যবহারকারীর নিজস্ব সময় অঞ্চলে তারিখ-সময় মানগুলি দেখতে চাই?
alexventuraio

@ অ্যালেক্সভেনচুরা যখন আপনি আপনার ব্যবহারকারীদের তারিখ-সময় মানগুলি দেখান তখন এটিকে তাদের সময় অঞ্চলগুলিতে রূপান্তর করে। অবিচলিত ডাটাবেস রেকর্ড করা একটি ভাল অনুশীলন
ওয়াহেদ

10

আপনি বিশ্বব্যাপী ইউটিসিতে সময় অঞ্চল নির্ধারণ করতে চাইলে, আপনি রেল 4 এ নিম্নলিখিতগুলি করতে পারেন:

# Inside config/application.rb
config.time_zone = "UTC"
config.active_record.default_timezone = :utc

আপনার অ্যাপ্লিকেশন পুনরায় চালু করতে ভুলবেন না আপনি পরিবর্তনগুলি দেখতে পাবেন না।


3

4.2.2 রেলগুলিতে, যান application.rbএবং ব্যবহার করুনconfig.time_zone='city' (যেমন: 'লন্ডন' বা 'বুখারেস্ট' বা 'আমস্টারডাম' এবং আরও কিছু)।

এটি ঠিক কাজ করা উচিত। এটা আমার জন্য কাজ করেছে।


3

আমার এই environment.rbফাইলটি আমার ফাইলে যুক্ত করতে হয়েছিল এবং সব ঠিক আছে :)

Rails.application.configure do
    config.time_zone = "Pacific Time (US & Canada)"
    config.active_record.default_timezone = :local
end
  • আমি লাইনের আগে এটি যুক্ত করেছিRails.application.initialize!

1

চীনা ব্যবহারকারীর জন্য আপনার নীচে কেবল দুটি লাইন যুক্ত করুন config/application.rb:

config.active_record.default_timezone = :local
config.time_zone = 'Beijing'

0

রুবে অন ​​রেল on.০.১ এ কনফিগার করুন > লোকাল > অ্যাপলিকেশন.আরবি আপনি এখানে যাবেন:

require_relative 'boot'

require 'rails/all'

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module CrudRubyOnRails6
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.0

    config.active_record.default_timezone = :local
    config.time_zone = 'Lima'

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration can go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded after loading
    # the framework and any gems in your application.
  end
end

আপনি দেখতে পাচ্ছেন যে আমি 2 টি লাইন দিয়ে সময় অঞ্চলটি কনফিগার করছি:

config.active_record.default_timezone =: local
config.time_zone = 'Lima'

আমি আশা করি এটি যারা রিলের সাথে 6.0.1.1 এ কাজ করছেন তাদের সহায়তা করবে


-2

আপনি যদি স্থানীয় সময় সেট করতে চান তবে নীচের পাঠ্যটি এতে প্রবেশ করুন application.rb

config.time_zone = 'Chennai'

# WARNING: This changes the way times are stored in the database (not recommended)
config.active_record.default_timezone = :local

তারপরে আপনার সার্ভারটি পুনরায় চালু করুন


12
ডিফল্ট_টাইমজোন দুটি বিকল্পের মধ্যে একটি গ্রহণ করে ..: স্থানীয় বা: ইউটিসি .. এটি একটি নির্দিষ্ট সময় অঞ্চল গ্রহণ করে না, সুতরাং এটি কার্যকর হবে না .. আপনাকে
ডিফল্ট_টাইমজোন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.