0

RoR でクエリを作成しようとしていますが、私の条件はparamsから取得され、動的に変化しています。

私はこれを試しました:

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

これは私の想像にすぎませんが、私の言いたいことを示しています。

ありがとう

4

2 に答える 2

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?

等..

于 2012-05-18T11:24:16.797 に答える
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]したがって、aまたはaの2つの条件しかないことを前提としていますparams[:last_name]。それ以上ある場合は、単に3値をif elsifステートメントに変更します。

于 2012-05-18T11:24:41.097 に答える