Несколько Carrierwave mount_uploader на одной модели
У меня есть модель под названием Рецепт, которая имеет 2 изображения, которые используют carrierwave, поэтому в этой модели у меня есть это для настройки carrierwave
mount_uploader :author_photo, AuthorUploader
mount_uploader :photo, PhotoUploader
Я также добавил несколько версий для своих изображений, таких как большой, маленький, средний, большой
Проблема в. скажи, у меня есть 2 изображения
Chocolate_Cake.jpg as the photo
My_Photo.jpg as author_photo
Когда я захожу в консоль и загружаю свой рецепт и в recipe.to_json, я получаю оба своих изображения из carrierwave, но они оба показывают фотографию для рецепта, а не фотографию автора.
"recipe": [
{
"author_photo": {
"url": "/uploads/recipe/photo/8/Chocolate_Cake.jpg",
"thumb": {
"url": "/uploads/recipe/photo/8/thumb_Chocolate_Cake.jpg"
},
"small": {
"url": "/uploads/recipe/photo/8/small_Chocolate_Cake.jpg"
},
"medium": {
"url": "/uploads/recipe/photo/8/medium_Chocolate_Cake.jpg"
},
"large": {
"url": "/uploads/recipe/photo/8/large_Chocolate_Cake.jpg"
}
},
"id": 8,
"photo": {
"url": "/uploads/recipe/photo/8/Chocolate_Cake.jpg",
"thumb": {
"url": "/uploads/recipe/photo/8/thumb_Chocolate_Cake.jpg"
},
"small": {
"url": "/uploads/recipe/photo/8/small_Chocolate_Cake.jpg"
},
"medium": {
"url": "/uploads/recipe/photo/8/medium_Chocolate_Cake.jpg"
},
"large": {
"url": "/uploads/recipe/photo/8/large_Chocolate_Cake.jpg"
}
},
Так что по какой-то причине мой ответ json не показывает мои загрузчики должным образом.
Если бы я должен был напечатать это в консоли,
recipe.photo
recipe.author_photo
Они придумали разные URL изображения
1 ответ
После некоторых исследований и помощи друга я обнаружил, что могу переопределить метод as_json для модели рецепта, чтобы исправить получаемый ответ.
def as_json(options = {})
super.merge('photo' => photo.as_json[:photo], 'author_photo' => author_photo.as_json[:author_photo])
end
Это решение сработало.