2017-02-14 15 views
1

私はNewsモデルにCarrierwave AttachmentUploaderを取り付けました。レールは搬送波宝石にフィールドを追加します

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" 
} 

私は、現在の出力を得るためにCarrierwaveへthumbnailフィールドを追加したい:

{ 
    "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

thumbを追加しましたが、あなたがアクティブレコードシリアライザとそれを達成することができ、余分なフィールドを追加しないでください。完全なJSONを更新できますか? @DipakG。 –

+0

。ちょうどコードを更新しました。私は顧客から私に送られる 'サムネイル' URLを保存する必要があります。シリアライザでどのように達成できますか? –

答えて

0

私はffmpegを私のMacに、gem 'carrierwave-video-thumbnailer'をインストールすることでこれを行うことができました。

そして、私のNewsSerializer

def attachments 
    a=[] 
    object.attachments.each do |att| 
     a << {url: att.url, content_type: att.content_type, thumb: att.thumb} 
    end 
    a 
end 
関連する問題