Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将关联的模型属性作为当前模型属性返回_Ruby On Rails_Json - Fatal编程技术网

Ruby on rails 将关联的模型属性作为当前模型属性返回

Ruby on rails 将关联的模型属性作为当前模型属性返回,ruby-on-rails,json,Ruby On Rails,Json,我在ProcessingStatus和Order之间有如下关联: 订单属于加工状态 ProcessingStatus有一个订单 当我返回订单时,我希望能够获得ProcessingStatus“name”属性作为JSON响应的“status”属性 那么,现在,对于下面的GET call at/orders/73 render :json => @order.to_json(:only => [:id], :include => {:processing_status =>

我在ProcessingStatus和Order之间有如下关联:

订单属于加工状态 ProcessingStatus有一个订单

当我返回订单时,我希望能够获得ProcessingStatus“name”属性作为JSON响应的“status”属性

那么,现在,对于下面的GET call at/orders/73

render :json => @order.to_json(:only => [:id], :include => {:processing_status => {:only => [:name]}})
我明白了:

{
    "id": 73,
    "processing_status": {
        "name": 'processing'
    }
}
{
    "id": 73,
    "status": 'processing'

}
我正在寻找一种方法来实现这一点:

{
    "id": 73,
    "processing_status": {
        "name": 'processing'
    }
}
{
    "id": 73,
    "status": 'processing'

}

无论如何,如果要这样做?

您可以在模型上定义一个方法,将状态返回为
processing\u status.name的值,然后将其包含在json中:

class Order < ActiveRecord::Base

  def status
    self.processing_status.try(:name)
  end

end
或者,您可以将状态添加到转换为json的哈希中:

@order.as_json(only: :id).merge(status: @order.processing_status.try(:name)).to_json
我使用了
。如果
处理状态为nil,请尝试(:name)
,但您可能不需要它。这两种情况下的行为略有不同,因为第一种情况不包括json中的
状态
,第二种情况包括
“状态”:null