Создайте вложение Refile из HTTpary на модели Ruby с помощью mongo db
Создавая мобильное приложение с бэкэндом Rails, я хотел бы импортировать изображение профиля facebook из facebook в мою систему с помощью rails. Изображение профиля находится по некоторому 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. Результатом DB действия вышеупомянутого действия "Update" будет новая запись ProfilePicture в mongodb со ссылкой на пользовательские данные, так что это тоже нормально. Таким образом, единственная проблема заключается в том, что вложение не сохраняется.
Как мне сохранить вложение?
1 ответ
Ответ состоял в том, что файл изображения, получаемый с 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