0

使用 Rails 后端构建移动应用程序,我想使用 rails 将 facebook 个人资料图片从 facebook 导入我自己的系统。个人资料图片位于某个 url,我后端的图片正在使用 Refile 保存。

ProfilePicture 模型:

class ProfilePicture
  include Mongoid::Document
  extend Refile::Mongoid::Attachment
  attachment :file, type: :image
  belongs_to :user

  field :created_at, type: String
  field :updated_at, type: String
end

用户模型:

class User
  include Mongoid::Document

  field :created_at, type: String
  field :updated_at, type: String

  has_one :profile_picture
end

使用 HTTParty 设置图片的代码:

@user = User.find_by(id: 1)
@picture_data = HTTParty.get("https://graph.facebook.com/me/picture", query: {
    access_token: access_token,
    type: "large"
})
pic = ProfilePicture.new(file: @picture_data.body)
@user.update(profile_picture: pic)

个人资料图片已获取,因为我可以在 HTTP 结果中看到数据。上面“更新”操作的数据库结果将是 mongodb 中的新 ProfilePicture 记录,并引用用户数据,所以也可以。所以唯一的问题是,附件没有被保存。

如何保存附件?

4

1 回答 1

0

答案是从 facebook 获取的图像文件不是附件的有效“图像”类型。更改是从附件属性中删除类型,如下所示:

class ProfilePicture
  include Mongoid::Document
  extend Refile::Mongoid::Attachment
  attachment :file
  belongs_to :user

  field :created_at, type: String
  field :updated_at, type: String
end
于 2017-05-30T16:28:28.937 回答