Delegate Account#user_locale method and allow nil (#2927)

master
Matt Jankowski 7 years ago committed by Eugen Rochko
parent cd830a2fab
commit 7a7d12d27f
  1. 2
      app/lib/language_detector.rb
  2. 2
      app/mailers/notification_mailer.rb
  3. 1
      app/models/account.rb
  4. 6
      spec/lib/language_detector_spec.rb

@ -35,6 +35,6 @@ class LanguageDetector
end end
def default_locale def default_locale
account&.user&.locale || I18n.default_locale account&.user_locale || I18n.default_locale
end end
end end

@ -71,7 +71,7 @@ class NotificationMailer < ApplicationMailer
private private
def locale_for_account(account) def locale_for_account(account)
I18n.with_locale(account.user.locale || I18n.default_locale) do I18n.with_locale(account.user_locale || I18n.default_locale) do
yield yield
end end
end end

@ -111,6 +111,7 @@ class Account < ApplicationRecord
:current_sign_in_ip, :current_sign_in_ip,
:current_sign_in_at, :current_sign_in_at,
:confirmed?, :confirmed?,
:locale,
to: :user, to: :user,
prefix: true, prefix: true,
allow_nil: true allow_nil: true

@ -43,16 +43,14 @@ describe LanguageDetector do
describe 'with an account' do describe 'with an account' do
it 'uses the account locale when present' do it 'uses the account locale when present' do
user = double(:user, locale: 'fr') account = double(user_locale: 'fr')
account = double(:account, user: user)
result = described_class.new('', account).to_iso_s result = described_class.new('', account).to_iso_s
expect(result).to eq :fr expect(result).to eq :fr
end end
it 'uses default locale when account is present but has no locale' do it 'uses default locale when account is present but has no locale' do
user = double(:user, locale: nil) account = double(user_locale: nil)
account = double(:accunt, user: user)
result = described_class.new('', account).to_iso_s result = described_class.new('', account).to_iso_s
expect(result).to eq :en expect(result).to eq :en

Loading…
Cancel
Save