我正在尝试在RoR中进行查询,但我的条件来自 params 并动态更改。
我试过这个:
@userlist = User.find(:all, conditions:{(name:params[:name] if params[:name] != nil), (lastname:params[:lastname] if params[:lastname] != nil)})
这只是我的想象力,但显示了我的意思。
thanx
答案 0 :(得分:1)
如果您使用的是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?
等。
答案 1 :(得分:0)
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
因此,我假设您只有两个条件,params[:name]
或params[:last_name]
。如果还有更多,只需将三元组更改为if elsif
语句。