Несколько 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

Это решение сработало.

Другие вопросы по тегам