2

我有一个相当大的模型,我只想为每条记录检索一组选定的字段,以保持我正在构建的 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 字符串太大了。

感谢您的任何指点!

4

1 回答 1

2

to_json调用支持和选项在序列化期间排除/包含模型字段。:except:only

@sites.to_json(:only => [:name, :foo, :bar])

上面的调用序列化Site带有字段name和的对象location

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

上面的调用序列化了Site带有字段的对象namelocation并且包含RelatedModel了带有description字段的对象。

于 2010-03-17T20:10:41.807 回答