console User.where( "username LIKE ?" , "%Test%" )



我试图找出正确的方法来做到这一点。这个想法是学习/理解如何使用部分信息进行搜索。就像我正在搜索 500 个用户名以查找所有将"Test"作为用户名一部分的用户名一样。(例如"测试相同","Ron 测试"等(

对于以下内容,我在控制台测试查找数据的方法。User.all 返回所有用户的所有数据。我想返回用户名包含"Test"的用户的所有数据。

所以我在控制台中做了以下操作

User.all

返回一个数组,其中包含所有用户的键/值对和相关信息。 2 用户的用户名中包含"Test"。所以我尝试像这样只返回这两个用户:

User.where("username LIKE ?", "%Test%")

控制台中的该命令没有运气。它返回的所有内容如下:

#<Sequel::SQLite::Dataset: "SELECT * FROM `users` WHERE (username LIKE '%Test%')">

以防万一,我使用的是 ruby 1.9.3 和 ramaze,但我认为答案仍然适用于使用轨道。

我想你快到了。 Sequel返回一个可以链接到进一步选择、投影、联接等的DataSet。这将建立更多的SQL,因此它还没有到达数据库。如果要使用当前查询,只需调用.all.first即可获得实际调用的结果。要获取数组,您只需链接两个调用,如

User.where("username LIKE ?", "%Test%").all

真的就是这么简单。

在控制台中尝试一下...

selected_users = User.where("username LIKE ?", "%Test%")
selected_users.each{|u| p u.username}

。我想你会感到惊喜。 在您尝试访问记录之前,续集不会执行。

最新更新