获取大于在rails创建的所有记录

时间:2018-03-15 22:37:02

标签: ruby-on-rails activerecord

我想得到所有与查询匹配的记录,我得到多个参数并将它们保存在查询中

query = Hash.new
query[:user_id] = params["user_id"] if query["user_id"]
query[:vehicle] = params["vehicle_id"] if query["vehicle_id"]
trips = Trip.where(query)

我还想添加params['created_at]如果这些参数存在但不知道怎么做

2 个答案:

答案 0 :(得分:1)

您可以为Trip模型添加范围。

scope :created_after, ->(time) { where("created_at > ?", time) if time }

然后将它链接起来:

Trip.created_after(params["created_at"]).where(query)

不是最优雅,但它会起作用。如果" created_at"不是在参数中,它将是零,只会返回所有行程。

答案 1 :(得分:0)

只是为了好玩并且匆匆离开Paul Byrne和this Q&A提供的答案,或许类似于:

params.slice(:user_id, :vehicle_id).compact.
  each_with_object(Trip.created_after(params[:created_at])) do |(key, value), scope|
    scope.merge(Trip.send(key, value))
  end