2014-07-09 38 views
2

我目前正在使用Rails內部的to_json幫助工具使用:限制在to_json語句中?

我想包含前5個curve_measurements。 這是我的代碼期待的時刻:

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

結果包括所有curve_measurment值,而不是隻是第5 所以它似乎是:極限參數並不影響我的查詢。

怎麼可能包含5或10個curve_measurements而不是全部?

+0

不知道,但也許'Sector.first.curves.limit(5).to_json( ...)'? –

+0

不起作用,這隻會限制曲線的數量而不是測量值:/ –

回答

3

兩種選擇:

剛剛創建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' 
0

看着docs,看起來to_json不會出現limit參數,所以它只是被忽略。我相信to_json是半棄用,取而代之的as_json,然而,你可能會嘗試,而不是:as_json

+0

'as_json'是Rails專用的助手,其中'to_json'通常由許多Ruby類默認提供。 'as_json'對web開發有一些不錯的選擇,這就是爲什麼它是這樣做的,我想。 – Smar