使用条件的 Rails as_json

3
在我的应用程序中,:foos 有许多 :bars,我正在将每个 foo 序列化为 JSON,如下所示:
@foo.as_json(
  except: [:created_at, :updated_at], 
  include: { 
    bars: { only: [:ip_addr, :active] }
  }
)

这给我带来了以下结果:
{
  "id" => 2, 
  "name" => "Hello World",
  "bars" => [ 
    { "ip_addr" => "192.123.12.32", "active" => 0 }, 
    { "ip_addr" => "192.123.12.33", "active" => 1 } 
  ]
}

正如您所见,我的序列化哈希包括一个非活动的条形图。如何从我的哈希中排除不活动的条形图?
如果我能这样做就太好了:
include: { bars: { only: { :active => true }}}

我是否已经充分使用了as_json方法?现在需要切换到Active Model Serializers吗?

2个回答

6

我认为你可以尝试添加一些方法,比如active_bars,它会返回你需要的内容,如下所示:

def active_bars
  bars.where active: true
end

或者您甚至可以添加新的关系:

has_many :active_bars, -> { where active: true }, class_name: '..', foreign_id: '..'

然后你就能够写:

@foo.as_json(
  except: [:created_at, :updated_at], 
  include: { 
    active_bars: { only: [:ip_addr, :active] }
  }
)

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接