新手问题 有什么最简单的写法吗?

QueXuQ · 2013年11月17日 · 最后由 liwei78 回复于 2013年11月17日 · 2731 次阅读

我有个代码是这样的:

class Product < ActiveRecord::Base
  def comment_name
    case self.comment
    when 1
      '良好'
    when 2
      '非常好'
    when 3
      '理想'
    when 4
      '完美'
    end
  end

  def comment_short_name
    case self.comment
    when 1
      'F'
    when 2
      'G'
    when 3
      'VG'
    when 4
      'EX'
    end
  end
end

这样的代码很罗嗦,和烦琐,有木有?有没有什么一件有更好的写法?

["a", "b", "c", "d"].fetch(1)

"F", "G", "VG", "EX"][comment+1]
class Product < ActiveRecord::Base
  COMMENT_NAMES = {1 => ['良好','F'], 2 => ['非常好','G'], 3 => ['理想','VG'], 4=> ['完美','EX']}

  def comment_name
    COMMENT_NAMES[self.comment].first
  end

  def comment_short_name
    COMMENT_NAMES[self.comment].last
  end
end
COMMENT_NAME = %w(未知 良好 非常好 理想 完美 )
COMMENT_SORT_NAME = %w( UK F G VG EX)
 def comment_name
    COMMENT_NAME[self.comment]
end
def comment_sort_name
  COMMENT_SORT_NAME[self.comment]
end

#5 楼 @ZombieCoder 我经常这么写,如果经常改动,就把 COMMENT_NAME 放到 config.yml 里。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号