require 'letter_avatar/has_avatar' require 'chinese_pinyin' class User module Avatar extend ActiveSupport::Concern include LetterAvatar::HasAvatar def username self.lastname.blank? ? self.login : Pinyin.t(self.lastname) end def get_letter_avatar_url(size = :lg) avatar_path(self.username, size).split('public/')&.last end def self.get_letter_avatar_url(name) return "" if name.blank? avatar = LetterAvatar.generate Pinyin.t(name), 120 avatar.split('public/')&.last end def avatar_path(username, size) LetterAvatar.generate username, avatar_size(size) end # 返回头像尺寸 # xs: 22px # sm: 32px # md: 48px # lg: 120px def avatar_size(size) case size when :xs then 22 when :sm then 32 when :md then 48 when :lg then 120 else size end end end end