Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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-活动记录:条件覆盖:选择_Ruby On Rails_Activerecord_Select_Conditional Statements - Fatal编程技术网

Ruby on rails Rails-活动记录:条件覆盖:选择

Ruby on rails Rails-活动记录:条件覆盖:选择,ruby-on-rails,activerecord,select,conditional-statements,Ruby On Rails,Activerecord,Select,Conditional Statements,我有一个相当大的模型,我只想为每个记录检索一组选定的字段,以保持我正在构建的JSON字符串较小 使用:select with find非常有效,但我的主要目标是将条件逻辑与关联模型一起使用。在命名范围内使用lamda真的是唯一的方法吗?我担心这可能是不必要的,但我想了解是否有一种方法可以使:select在条件下工作 这项工作: @sites = Site.find :all, :select => 'id,foo,bar' 当我尝试这个: @sites = Site.find :al

我有一个相当大的模型,我只想为每个记录检索一组选定的字段,以保持我正在构建的JSON字符串较小

使用:select with find非常有效,但我的主要目标是将条件逻辑与关联模型一起使用。在命名范围内使用lamda真的是唯一的方法吗?我担心这可能是不必要的,但我想了解是否有一种方法可以使:select在条件下工作

这项工作:

@sites = Site.find  :all, :select => 'id,foo,bar'
当我尝试这个:

@sites = Site.find  :all, :select => 'id,foo,bar', :include => [:relatedmodel],
                  :conditions => ["relatedmodel.type in (?)", params[:filters]]
该条件有效,但每个记录都包含所有站点属性,这使得我的JSON字符串太大

谢谢你的指点

该调用支持
:除
:仅
选项以在序列化期间排除/包括模型字段

@sites.to_json(:only => [:name, :foo, :bar])
上面的调用使用字段
name
location
序列化
Site
对象

@sites.to_json(:only => [:name, :location], 
        :include => { :relatedmodel => { 
                          :only => [:description] 
                      } 
                    }
         )

上面的调用将
站点
对象序列化为字段
名称
、位置、包含
相关模型
对象和
描述
字段。

您确定这些条件是问题所在吗?我还没有对此进行测试,但是include看起来更可疑。我可能会完全困惑,但相关的模型不需要被包括在内,以便对其应用条件吗?如果我这样做@sites=Site.find:all,:select=>'id,foo,bar',:include=>:relatedmodel:select中的3个属性都是返回的,就像我希望在添加条件后会发生的那样。这很好。我没有考虑查看to_json调用,因为我挂断了让activerecord给我想要的东西的尝试。这非常有效,我的JSON对象现在大小合理。谢谢