【发布时间】:2014-10-31 13:30:38
【问题描述】:
我想知道如何根据参数是否存在/存在成功设置动态 Active Record 查询。
我有这个问题
Animal.joins(:user).where(animal_type: params[:animal_type], rehomed: params[:rehomed], users: {town: params[:animal_town]})
我已经尝试过这些方法,但我相信我的语法完全错误:
conditions = []
conditions << [ animal_type: params[:animal_type], ] if params[:animal_type].present?
conditions << [ rehomed: params[:rehomed], ] if params[:rehomed].present?
conditions << [ users: {town: params[:animal_town]} ] if params[:animal_town].present?
@animals = Animal.joins(:user).where(conditions)
我不想把它全部放在一个嵌套的哈希中,是吗?
【问题讨论】:
-
为什么你不想把它放在嵌套散列中?它应该在嵌套哈希中。
-
在您的情况下,
where无论如何都接受哈希。因此,使用强参数和params哈希本身可能是可行的方法。 -
好吧,也许我今天很慢,但要访问条件哈希我会做
where(conditions: conditions)? -
类似
where(params)但不要这样做,使用Rails 的permit、require等过滤params:edgeguides.rubyonrails.org/…。 -
@Richlewis 是的,你会做
where(conditions: conditions)。在问 BTW 之前,你为什么不试试呢?
标签: ruby-on-rails ruby activerecord ruby-on-rails-4