簡體   English   中英

RoR中的動態條件查詢

[英]Dynamic conditions query in RoR

我正在嘗試在RoR中進行查詢,但是我的條件來自參數並且正在動態變化。

我已經試過了:

@userlist = User.find(:all, conditions:{(name:params[:name] if params[:name] != nil), (lastname:params[:lastname] if params[:lastname] != nil)})

這只是我的想象力,但顯示出我的意思。

謝謝

如果您在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?

等等..

您可以執行以下操作:

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語句。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM