Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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 3 to_json include with condition/where子句_Ruby On Rails_Ruby On Rails 3_Activerecord_Ruby On Rails 3.1 - Fatal编程技术网

Ruby on rails Rails 3 to_json include with condition/where子句

Ruby on rails Rails 3 to_json include with condition/where子句,ruby-on-rails,ruby-on-rails-3,activerecord,ruby-on-rails-3.1,Ruby On Rails,Ruby On Rails 3,Activerecord,Ruby On Rails 3.1,我使用以下命令输出JSON记录列表: @team.people.to_json( :include => [:user, :statistics => {:include => :attribute}]).html_safe 但是,我只想包括设置了特定类型id的统计信息。本质上是与用户和统计数据的左外连接,其中统计数据上的a type_id等于某个数字。我至少可以想到几个选项: 在Person模型中,重写为_json,或者更好的是,重写为可序列化的_散列,并在那里

我使用以下命令输出JSON记录列表:

@team.people.to_json(
      :include => [:user, :statistics => {:include => :attribute}]).html_safe

但是,我只想包括设置了特定类型id的统计信息。本质上是与用户和统计数据的左外连接,其中统计数据上的a type_id等于某个数字。

我至少可以想到几个选项:

在Person模型中,重写为_json,或者更好的是,重写为可序列化的_散列,并在那里执行条件转换。 而不是{:include=>:attribute}执行{:methods=>:foo}并在foo中执行您的条件。 下面是一个我重写可序列化_散列的示例,如果有帮助的话:

  def serializable_hash(options={})
    options = { 
      :methods => [
        'client',
        'services',
        'products',
        'has_payments',
      ]}.update(options)
    super(options)
  end 

我可以想象上面的选项=如果type\u id是您要查找的数字,则将methods数组设置为一个值,或者设置为其他值。

不幸的是,这对我不起作用,type\u id需要是动态的,这是在返回活动记录结果集的函数上下文中设置的。本质上,我需要能够在include的左侧外部联接上添加一个“and”条件。然而,在Rails中似乎不可能做到这一点。您能在您的问题中发布您的查询吗?我已经澄清了这个问题,并在这里重新提问:谢谢您的帮助。