使用父模型属性的CarrierWave上传器默认图像

时间:2016-07-19 20:23:48

标签: ruby-on-rails carrierwave

我正在使用我的rails项目中的用户头像的CarrierWave上传器,我正在为没有上传图片的用户提供默认URL(从4个选项中随机选择)。正如CarrierWave README所建议的那样,我已经实现了它:

class UserAvatarUploader < ImageUploader
  def default_url(*args)
    ActionController::Base.helpers.asset_path("avatars/default_avatar_#{rand(4).to_s}.png")
  end
end

由于它是一个随机函数,这里的问题是每次重新加载页面时用户的头像都会改变。理想情况下,我想从用户的用户名中获取一个数字,以便他/她的默认头像保持一致。我怎么能这样做?提前谢谢!

1 个答案:

答案 0 :(得分:1)

好的,我解决了。基本上我被卡住了,因为我找不到从default_url方法中获取用户信息的方法。后来我发现变量model可用,它引用了用户。这是我的最终代码:

class UserAvatarUploader < ImageUploader
  def default_url(*args)
    number = model.id % 4
    ActionController::Base.helpers.asset_path("avatars/default_avatar_#{number}.png")
  end
end