console User.where(“用户名LIKE?”,“%Test%”)

时间:2014-06-21 01:26:27

标签: ruby sqlite sequel ramaze

我试图找出正确的方法来做到这一点。我们的想法是学习/了解如何使用部分信息进行搜索。就像我正在为所有具有“测试”作为用户名一部分的所有用户名搜索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。

2 个答案:

答案 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}

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