Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 从多属性搜索的where条件中删除搜索字符串/查询属性。从where条件中删除空白参数的空白属性_Mysql_Ruby On Rails_Ruby - Fatal编程技术网

Mysql 从多属性搜索的where条件中删除搜索字符串/查询属性。从where条件中删除空白参数的空白属性

Mysql 从多属性搜索的where条件中删除搜索字符串/查询属性。从where条件中删除空白参数的空白属性,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,我想从具有多个参数的产品表中搜索产品,但我只想搜索那些不为空的参数。我正在为此使用此查询 @search_result = Product.where(:status_id=>1,:brand_id => @brand_id, :product_name_id => @product_name_id, :size_id => @product_size_id, :product_type_id => @product_type_id ) 我想要这样 如果@p

我想从具有多个参数的产品表中搜索产品,但我只想搜索那些不为空的参数。我正在为此使用此查询

@search_result = Product.where(:status_id=>1,:brand_id => @brand_id,   :product_name_id => @product_name_id, :size_id => @product_size_id,  :product_type_id => @product_type_id )
我想要这样 如果@product\u name\u id为空?那么查询应该是

@search_result = Product.where(:status_id=>1,:brand_id => @brand_id, :size_id => @product_size_id,  :product_type_id => @product_type_id )
@应从查询中删除产品名称id。我也试过了

@search_result = Product.find_by_sql [
                                             "SELECT * FROM products WHERE status_id = ? AND brand_id > ? AND product_name_id > ? AND size_id > ? AND product_type_id > ? AND grade > ? ",
                                             "#{1}",
                                             "#{ unless @brand_id.blank?
                                                   @brand_id
                                                 end

                                              }",
                                             "#{ unless @product_name_id.blank?
                                                    @product_name_id
                                                 end

                                              }",
                                             "#{ unless @product_size_id.blank?
                                                    @product_size_id
                                                 end

                                              }",
                                             "#{ unless @product_type_id.blank?
                                                   @product_type_id
                                                 end

                                              }",
                                             "#{ unless @grade.blank?
                                                   @grade
                                                 end

                                              }"
                                         ]

但它并没有给出我想要的结果,我的意思是返回错误的结果。

我现在的窍门是使用强参数

@search_result =Product.where(search_params)

它删除了空白参数的属性

def search_params
  my_where_params = params.permit(:product_type_id, :brand_id,:product_name_id,:grade,:size_id).select {|k,v| v.present?}
end