无法从facebook carrierwave上传图片

时间:2017-08-18 16:57:05

标签: ruby-on-rails ruby carrierwave

我目前有一个用户个人资料,允许用户上传图像文件,使用jQuery获取裁剪数据,然后将其发送到CarrierWave / RMagick进行裁剪/处理。它终于运作良好。

我现在遇到的问题是,如果用户注册Facebook(oAuth),我想默认将他们的个人资料图片设置为他们的Facebook图片。我希望这是相同的字段(TalentProfile.profile_image),因为我希望用户能够将其与自定义上传交换出来,或者如果他们喜欢则将其删除。

以下是我目前的流程:

  • 用户注册Facebook,创建用户。
  • 在用户
  • 下创建TalentProfile资源
  • 我在创建TalentProfile之后添加profile_image。

这是我的talent_profile.rb模型:

class TalentProfile < ApplicationRecord
    belongs_to :user
    mount_uploader :profile_image, ProfileImageUploader
    validates :profile_image, file_size: { less_than: 5.megabytes }

    def crop_profile_image
        if crop_x.present?
            profile_image.recreate_versions!
        end
    end

    def self.set_facebook_image(profileId, auth)
        @profile = TalentProfile.find(profileId)
        @profile.profile_image = auth.info.image
        byebug
    end
end

当运行self.set_facebook_image时,似乎不能像这样设置@ profile.profile_image,除非我删除了mount_uploader并验证了行。即使auth.info.image是我需要的URL,它总是以nil的形式出现。这让我相信如果我更新CarrierWave就不能像这样处理它;它似乎需要提交表单。

我怎样才能做到这一点?可能吗?感谢您的任何信息!

1 个答案:

答案 0 :(得分:1)

您应该使用remote_profile_image_url方法从远程网址上传图片。