如何在Rails中搜索通配符

时间:2014-01-18 15:12:40

标签: ruby-on-rails

我试图在我的用户模型中搜索以任何整数开头的所有用户,我有单个字母的代码并且它有效,但我无法使用外卡。现在我有这个代码:

在我看来:

<%= link_to '#', users_charlist_path(:char => '[0123456789]' %>

在我的控制器里我有:

def charlist
  @a = User.where('goal like ?', "#{params[:char]}%").to_a
end

然而,'[0123456789]',似乎不起作用,因为即使我有名字以整数开头的用户,它也不会给我任何回报。我该怎么做?

1 个答案:

答案 0 :(得分:0)

where方法是ActiveRecord的一部分,它将对象映射到数据库。那么如何使用正则表达式查询数据库取决于您在ruby上使用的数据库。您需要查找您使用的数据库的正则表达式函数。对于mysql,你可以在这里找到它们:

http://dev.mysql.com/doc/refman/5.1/de/regexp.html

另一种方法是选择所有对象并使用select方法过滤符合您需求的结果。这种方法记录在这里:

http://www.ruby-doc.org/core-2.1.0/Array.html#method-i-select

对于大量数据,我建议使用数据库,即使这意味着您的应用程序在不同数据库系统之间不是100%可移植的。