Ruby on rails Rails-活动记录:条件覆盖:选择
我有一个相当大的模型,我只想为每个记录检索一组选定的字段,以保持我正在构建的JSON字符串较小 使用:select with find非常有效,但我的主要目标是将条件逻辑与关联模型一起使用。在命名范围内使用lamda真的是唯一的方法吗?我担心这可能是不必要的,但我想了解是否有一种方法可以使:select在条件下工作 这项工作: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
@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对象现在大小合理。谢谢