0

假设在控制器中我们有这样的东西:

@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 个患者计数,那么返回的 JSON 将有 200 个对象。但就我而言,我只想要一定数量的。例如,我假设 patient_counts 表有两个名为 Salary 和 Bonus 的字段,我想在 JSON 中返回 15 个对象,而不是所有这 200 个对象......其中只有 15 个具有最高 Salary+Bonus。

对于这种情况下的逻辑和计算,我该怎么办?

编辑:关于模型的信息:

program.rb :
name:string
has_many: patient_conuts

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

1 回答 1

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
于 2013-03-02T22:19:29.013 回答