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 Rails作为带条件的json_Ruby On Rails_Serialization - Fatal编程技术网

Ruby on rails Rails作为带条件的json

Ruby on rails Rails作为带条件的json,ruby-on-rails,serialization,Ruby On Rails,Serialization,在我的应用程序中,:foos有许多:bar,我将每个foo序列化为JSON,如下所示: @foo.as_json( except: [:created_at, :updated_at], include: { bars: { only: [:ip_addr, :active] } } ) 这给了我以下信息: { "id" => 2, "name" => "Hello World", "bars" => [ { "ip_addr"

在我的应用程序中,
:foos
有许多
:bar
,我将每个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 }}}

我有没有把
当作_json
去做呢?我现在需要切换到活动的模型序列化程序吗?

您使用as_json作为一些操作的自定义json响应条件,但是大多数响应都需要默认json响应的模型序列化程序


阅读这些,.

我认为您可以尝试添加一些方法,如
活动条
,它将准确返回您需要的内容,如:

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] }
  }
)