2013-03-02 133 views
0

讓我們在控制器中說,我們有這樣的事情:限制返回JSON行數

@org = Org.includes(programs: :patient_counts]).find(params[:id]) 
respond_with(@org) 

,現在我通過這JBuilder的:

json.program @org.programs do |program| 
    json.(program, :name) 
    # more code to also return some info from patien_counts table too 
end 

所以,如果我有一個像200程序和1-1關係中,我也有200個patient_counts,那麼返回的JSON將有200個對象。但在我的情況下,我只想要一定數量的他們。例如我可以說,patient_counts表有兩個名爲Salary和Bonus的字段,我想在JSON中返回15個對象,而不是所有這200個對象..其中15個工資最高的獎金。

對於像這種情況下的邏輯和計算,我該怎麼做?

編輯:信息車型簡介:

program.rb : 
name:string 
has_many: patient_conuts 

patient_count.rb: 
belongs_to: program 
program_id # from the program above 
total_amount: integer 
+1

你可以更新模型的問題 – AnkitG 2013-03-02 22:32:22

+0

@AnkitG謝謝先生以下,好的我更新了模型。 – Bohn 2013-03-02 22:41:55

回答

1

你爲什麼不能有模型返回數據集給您,您有狀況,這樣你就不必在工作JSON用於過濾

更新:

class Program < ActiveRecord::Base 
    has_many :patient_counts 
scope :salary_and_bonus, ->(salary,bonus) {where("salary >= :salary AND bonus >= :bonus ', {salary: salary, bonus: bonus}).limit(15)} 
end 
end 

Program.includes(:patient_counts).salary_and_bonus(15,20) #15 and 20 are my assumed limits 
+0

,因爲我沒有足夠的知識!你能解釋更多嗎?我的模型非常空,只有一堆has_many,belongs_to用於program和patient_count模型。 – Bohn 2013-03-02 22:24:44

+0

謝謝你的答案。如果我想說薪水領域的「前20名」是什麼? (即列出薪水最高的前20名) – Bohn 2013-03-02 23:17:25

+1

如果您想要薪水只需修改薪資條件的範圍,並將限制保持爲20.默認情況下,它將從表中選擇前20名,以滿足您的要求薪金標準。 – AnkitG 2013-03-02 23:19:58