我试图找出正确的方法来做到这一点。我们的想法是学习/了解如何使用部分信息进行搜索。就像我正在为所有具有“测试”作为用户名一部分的所有用户名搜索500个用户名。 (示例“测试相同”,“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,但我认为答案仍然适用于使用rails。
答案 0 :(得分:1)
我想你差不多了。 Sequel
返回一个DataSet
,可以链接到进一步的选择,投影,连接等。这会构建更多的SQL,因此它还没有到达数据库。如果您想使用当前查询,只需在其上调用.all
或.first
即可获得实际调用的结果。要获得数组,您只需将两个调用链接起来,如
User.where("username LIKE ?", "%Test%").all
真的很简单。
答案 1 :(得分:0)
在控制台中试试......
selected_users = User.where("username LIKE ?", "%Test%")
selected_users.each{|u| p u.username}
......我想你会惊喜万分。在您尝试访问记录之前,不会执行续集。