Ruby on rails 将关联的模型属性作为当前模型属性返回
我在ProcessingStatus和Order之间有如下关联: 订单属于加工状态 ProcessingStatus有一个订单 当我返回订单时,我希望能够获得ProcessingStatus“name”属性作为JSON响应的“status”属性 那么,现在,对于下面的GET call at/orders/73Ruby 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 =>
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