Rails将字段添加到carrierwave gem

时间:2017-02-14 08:43:57

标签: ruby-on-rails ruby carrierwave

我有一个载有Carrierwave AttachmentUploader的News模型。

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

我该怎么做?

1 个答案:

答案 0 :(得分:0)

好的,我设法通过在我的Mac和ffmpeg上安装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