【发布时间】:2011-01-28 18:08:21
【问题描述】:
我有一个相当大的模型,我只想为每条记录检索一组选定的字段,以保持我正在构建的 JSON 字符串很小。
将 :select 与 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 = Site.find :all, :select => 'id,foo,bar', :include => :relatedmodel :select 中的 3 个属性都是返回的,因为我希望会发生添加条件之后。
标签: ruby-on-rails activerecord select conditional-statements