将Virtual属性添加到要输出的活动记录对象

时间:2014-09-27 15:25:38

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我的模型中有一个名为“file_url(:thumb)”的自定义方法,用于接收特定的缩略图文件URL。该方法由carrierwave gem提供。

它未存储在我的数据库中。如何将此虚拟属性添加到@document,以便在转换为json时包含它?

module Api
  module V1
    class DocumentsController < ApiController      

      respond_to :json

      def show
        @document = Document.find(params[:id])
        respond_to do |format|
          format.json { render json: @document }
          format.xml { render xml: @document }
        end
      end
    end
  end
end

1 个答案:

答案 0 :(得分:1)

您需要在Document模型中定义自己的as_json方法。像这样的东西可以解决这个问题:

def as_json(options = { })
  h = super(options)
  h[:thumb_url] = file_url(:thumb)
  h
end