[英]Dynamic conditions query in RoR
I'm trying to make query in RoR, but my conditions are coming from params and changing dynamically. 我正在尝试在RoR中进行查询,但是我的条件来自参数并且正在动态变化。
I've tried this: 我已经试过了:
@userlist = User.find(:all, conditions:{(name:params[:name] if params[:name] != nil), (lastname:params[:lastname] if params[:lastname] != nil)})
It's just my imagination, but shows what I mean. 这只是我的想象力,但显示出我的意思。
thanx 谢谢
If you're on Rails 3: 如果您在Rails 3上:
@userlist = User.scoped
@userlist = @userlist.where(name: params[:name]) if params[:name].present?
@userlist = @userlist.where(lastname: params[:lastname]) if params[:lastname].present?
etc.. 等等..
you could do something like: 您可以执行以下操作:
BlahController < ActiveController::Base
before_filter :find_params, :only => :index
def index
@user_list = User.where(@filtered_params).all
end
def find_params
@filtered_params = params[:name].present? ? "'name = ?', #{params[:name]}" : "'last_name = ?', #{params[:last_name]}"
end
end
So I assume you only have two conditions, a params[:name]
or a params[:last_name]
. 因此,我假设您只有两个条件,一个
params[:name]
或一个params[:last_name]
。 If there are more, simply change the ternary to a if elsif
statement. 如果还有更多,只需将三元数更改为
if elsif
语句。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.