我在rails中有一个index操作,可以处理很多参数,例如:

params[:first_name] # can be nil or first_name
params[:age]        # can be nil or age
params[:country]    # can be nil or country

当找到用户时,我想对所有非零的条件进行“与”运算。这使我找到条件的8个排列。

我如何才能保持代码的DRY灵活性和灵活性,而不是仅仅为了构建查找条件而使用一串if语句结束。请记住,如果未指定任何条件,我只想返回User.all

最佳答案

怎么样:

conditions = params.only(:first_name, :age, :country)
conditions = conditions.delete_if {|key, value| value.blank?}

if conditions.empty?
  User.all
else
  User.all(:conditions => conditions)
end

关于ruby-on-rails - 事件记录中的动态查找条件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1169368/

10-11 17:16