我在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/