Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 我是否可以对两个不同表字段中的值求和,并通过Rails/Active Record对该值进行排序?_Ruby On Rails_Postgresql_Activerecord - Fatal编程技术网

Ruby on rails 我是否可以对两个不同表字段中的值求和,并通过Rails/Active Record对该值进行排序?

Ruby on rails 我是否可以对两个不同表字段中的值求和,并通过Rails/Active Record对该值进行排序?,ruby-on-rails,postgresql,activerecord,Ruby On Rails,Postgresql,Activerecord,我有一个会费和一个捐赠模型。我想按会费+捐款总额的降序排列会员名单。这是active record唯一可以做的事情,还是我必须在应用程序中添加和排序代码 db is Postgres您可以使用select、where和order子句实现这一点。假设我们有一个具有此模式的表: create_table "leaders", :force => true do |t| t.integer "leaderable_id" t.string "leaderable_typ

我有一个会费和一个捐赠模型。我想按会费+捐款总额的降序排列会员名单。这是active record唯一可以做的事情,还是我必须在应用程序中添加和排序代码


db is Postgres

您可以使用select、where和order子句实现这一点。假设我们有一个具有此模式的表:

  create_table "leaders", :force => true do |t|
    t.integer  "leaderable_id"
    t.string   "leaderable_type"
    t.integer  "county_id"
    t.integer  "us_state_id"
    t.integer  "recruits"
    t.integer  "hours"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.datetime "last_run_dt"
  end
如果要对结果排序,请运行如下查询:

Leader.select("(hours + recruits) as hr").order("hr")
Leader.select("(hours + recruits) as hr").where("(hours +recruits) > 1100")
如果要根据总和选择记录,则可以运行如下查询:

Leader.select("(hours + recruits) as hr").order("hr")
Leader.select("(hours + recruits) as hr").where("(hours +recruits) > 1100")
您可以通过以下方式访问结果:

Leader.select("(hours + recruits) as hr").order("hr").first.hr