Delegate Account#user_locale method and allow nil (#2927)
This commit is contained in:
		
							parent
							
								
									cd830a2fab
								
							
						
					
					
						commit
						7a7d12d27f
					
				
					 4 changed files with 5 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -35,6 +35,6 @@ class LanguageDetector
 | 
			
		|||
  end
 | 
			
		||||
 | 
			
		||||
  def default_locale
 | 
			
		||||
    account&.user&.locale || I18n.default_locale
 | 
			
		||||
    account&.user_locale || I18n.default_locale
 | 
			
		||||
  end
 | 
			
		||||
end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -71,7 +71,7 @@ class NotificationMailer < ApplicationMailer
 | 
			
		|||
  private
 | 
			
		||||
 | 
			
		||||
  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
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -111,6 +111,7 @@ class Account < ApplicationRecord
 | 
			
		|||
           :current_sign_in_ip,
 | 
			
		||||
           :current_sign_in_at,
 | 
			
		||||
           :confirmed?,
 | 
			
		||||
           :locale,
 | 
			
		||||
           to: :user,
 | 
			
		||||
           prefix: true,
 | 
			
		||||
           allow_nil: true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -43,16 +43,14 @@ describe LanguageDetector do
 | 
			
		|||
 | 
			
		||||
      describe 'with an account' do
 | 
			
		||||
        it 'uses the account locale when present' do
 | 
			
		||||
          user    = double(:user, locale: 'fr')
 | 
			
		||||
          account = double(:account, user: user)
 | 
			
		||||
          account = double(user_locale: 'fr')
 | 
			
		||||
          result  = described_class.new('', account).to_iso_s
 | 
			
		||||
 | 
			
		||||
          expect(result).to eq :fr
 | 
			
		||||
        end
 | 
			
		||||
 | 
			
		||||
        it 'uses default locale when account is present but has no locale' do
 | 
			
		||||
          user    = double(:user, locale: nil)
 | 
			
		||||
          account = double(:accunt, user: user)
 | 
			
		||||
          account = double(user_locale: nil)
 | 
			
		||||
          result  = described_class.new('', account).to_iso_s
 | 
			
		||||
 | 
			
		||||
          expect(result).to eq :en
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue