A53cdbd5cbc6e9fc944d35331a32e63c

there are too many if then statements and and clauses. is the method trying to do too much?

def is_translated?
    if !params[:lang].blank? and params[:lang].eq?('en')
      return true
    end
    
    if !cookies[:lang].blank? and cookies[:lang].eq?('en')
      return true
    end
    
    if !session[:lang].blank? and session[:lang].eq?('en')
      return true
    end
    
    if !session[:locale].blank? and session[:locale].eq?('en')
      return true
    end
    
    if !params[:locale].blank? and params[:locale].eq?('en')
      return true
    end
    
  end

Refactorings

No refactoring yet !

D41d8cd98f00b204e9800998ecf8427e

op

August 9, 2010, August 09, 2010 11:22, permalink

1 rating. Login to rate!

You could make it a lot shorter at least..

def is_translated
  [params, cookies, session].each do |store|
    return true if !store[:lang].blank? && store[:lang].eq?('en')
  end

  [session, params].each do |store|
    return true if !store[:locale].blank? && store[:locale].eq?('en')
  end

  false
end
8f6f95c4bd64d5f10dfddfdcd03c19d6

Rick DeNatale

August 9, 2010, August 09, 2010 14:03, permalink

3 ratings. Login to rate!

How about

def is_translated
   (params[:lang] || cookies[:lang] ||  session[:lang] ||  session[:locale] ||  params[:locale])  == 'en'
end
A53cdbd5cbc6e9fc944d35331a32e63c

corroded

August 9, 2010, August 09, 2010 14:14, permalink

No rating. Login to rate!

going with op's code i editted the method name + added andand to make it shorter still.

def is_english?
    [params, cookies, session].each do |store|
      return (store[:lang].andand.to_s == "en" || store[:locale].andand.to_s == "eng")
    end
    
    false
  end
A8d3f35baafdaea851914b17dae9e1fc

Adam

August 9, 2010, August 09, 2010 17:35, permalink

2 ratings. Login to rate!
def translated?
  [ params, cookies, session ].any? { |store| store[:lang] == 'en' || store[:locale] == 'en' }
end
D1eea20f76acaf5d5066dfdc3f3cdb78

Sarah

August 10, 2010, August 10, 2010 20:16, permalink

No rating. Login to rate!
def translated?(lang)
  [params[:lang], cookies[:lang], session[:lang], session[:locale], params[:locale]].each do |value|
    return true if !value.blank? and value.eq?(lang)
  end
  false
end

def english?
  translated?('en')
end

Your refactoring





Format Copy from initial code

or Cancel