使用:限制to_json语句?

时间:2014-07-09 11:32:10

标签: ruby-on-rails ruby

我目前正在使用Rails中的to_json Helper

我想要包含前5个curve_measurements。 这就是我的代码目前所看到的:

Sector.first.curves.to_json(:include => {:curve_measurements => {:except => [:created_at,:updated_at,:curve_id],:limit => 5}, :curvetype =>{}})

结果包括所有curve_measurment值,而不仅仅是前5个。 所以似乎:limit参数不会影响我的查询。

如何只包含5个或10个curve_measurements而不是全部?

2 个答案:

答案 0 :(得分:4)

两种选择:

只需在Curve中创建一个名为five_cms的方法,例如:

def five_cms; curve_measurements.limit(5); end

然后做:

Sector.first.curves.to_json({
  :include => {
    :five_cms => {
      :except => [:created_at,:updated_at,:curve_id],
    },
    :curvetype => {}
  }
})

或者在Curve中为您的关联添加限制。在Rails 4中,您可以这样做:

has_many :five_cms, lambda { limit(5) }, class_name: 'CurveMeasurement'

在Rails 3及更早版本中,我认为是:

has_many :five_cms, limit: 5, class_name: 'CurveMeasurement'

答案 1 :(得分:0)

查看docsto_json无法显示limit个参数,因此它被忽略了。我认为to_json已被半推荐使用as_json,但您可以尝试使用as_json