控制台 User.where("用户名 LIKE ?", "%Test%")

问题描述 投票:0回答:2

我正在尝试找出正确的方法来做到这一点。这个想法是学习/理解如何使用部分信息进行搜索。就像我正在搜索 500 个用户名中所有包含“Test”作为用户名一部分的用户名一样。 (例如“测试相同”、“罗恩测试”等)

下面我在控制台测试查找数据的方式。 User.all 返回所有用户的所有数据。我想返回用户名包含“Test”的用户的所有数据。

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

User.all

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

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

控制台中的该命令不太好。它返回的内容如下:

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

以防万一,我正在使用 ruby 1.9.3,并且 ramaz,但我认为答案仍然适用于使用 Rails。

ruby sqlite sequel ramaze
2个回答
2
投票

我想你已经快到了。

Sequel
返回一个
DataSet
,可以链接到进一步的选择、投影、连接等。这将构建更多的SQL,因此它还没有到达数据库。如果您想使用当前查询转到那里,您只需调用
.all
.first
即可获取实际调用的结果。要获取数组,您只需将两个调用链接起来即可,如下所示

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

其实就是这么简单。


0
投票

在控制台中尝试这个...

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

selected_users.each{|u| p u.username}

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

© www.soinside.com 2019 - 2024. All rights reserved.