仅当搜索字符串不为空时,ActiveRecord(SQL)才会查询多个列

时间:2017-08-16 18:31:14

标签: sql ruby-on-rails activerecord

使用填充了登记选民的PG数据库。

尝试设置它,以便我可以按名字,姓氏,邮编或城市搜索。我希望能够找到所有与所有输入的参数相匹配的选民,但是无法处理空的搜索字段。

where("zip LIKE ? OR city LIKE ? OR last_name LIKE ? OR first_name LIKE ?",
 "#{params[:zip]}","#{params[:city]}","#{params[:last_name]}","#{params[:first_name]}")

有没有更好的方法来构建它以匹配所有输入的参数,但忽略空字符串参数?现在,如果我输入名字'John Smith',我会得到'John Jones'和'Jane Smith'。

1 个答案:

答案 0 :(得分:2)

这可以解决问题:

@Test(expected=IllegalArgumentException.class)
public void testNullInput() {
    CharacterCounter.countCharacters(null);
}

但如果没有给出zip / city / last_name / first_name,它应该返回所有记录。