2017-02-14 8 views
1

У меня есть модель News с подключением Carrierwave AttachmentUploader.Rails добавить поля к камню несущей волны

JSON результат выглядит следующим образом:

{ 
    "id": 158, 
    "title": "title1", 
    "description": "desc1", 
    "category": "ipsum", 
    "attachments": [ 
    { 
     "url": "/uploads/news/attachments/158/Tesla_P100D_App_v3.0_Review.mp4", 
     "content_type": "application/mp4" 
    } 
    ], 
    "created_at": "2017-02-14T08:34:14.119Z" 
} 

Я хочу добавить thumbnail поле для Carrierwave, чтобы получить выходной ток:

{ 
    "id": 158, 
    "title": "title1", 
    "description": "desc1", 
    "category": "ipsum", 
    "attachments": [ 
    { 
     "url": "/uploads/news/attachments/158/Tesla_P100D_App_v3.0_Review.mp4", 
     "content_type": "application/mp4", 
     "thumbnail": { 
       "name": "Tesla_P100D_App_v3.0_Review", 
       "url": "/uploads/news/attachments/158/Tesla_P100D_App_v3.0_Review.png" 
} 
    } 
    ], 
    "created_at": "2017-02-14T08:34:14.119Z" 
} 

Вот мой NewsSerializer:

class NewsSerializer < ActiveModel::Serializer 
    attributes :id, :title, :description, :latitude, :longitude, :category, :tag_list, :avg_rating, :attachments, :created_at 

def attachments 
    a=[] 
    object.attachments.each do |att| 
     a << {url: att.url, content_type: att.content_type} 
    end 
    a 
end 

end 

Как мне это сделать?

+0

Не добавлять дополнительные поля вы можете достичь его с активной записи сериализатором. Можете ли вы обновить свой полный json? –

+0

@DipakG. просто обновил код. Мне нужно сохранить url 'thumbnail', который будет отправлен мне клиентом. Как это сделать с помощью сериализатора? –

ответ

0

Хорошо, мне удалось это сделать, установив ffmpeg на мой mac и gem 'carrierwave-video-thumbnailer'.

И добавил thumb к моему NewsSerializer

def attachments 
    a=[] 
    object.attachments.each do |att| 
     a << {url: att.url, content_type: att.content_type, thumb: att.thumb} 
    end 
    a 
end 
Смежные вопросы