Arel 查询错误

Errors with Arel query

我正在尝试使用 Rails 6 API 使用 Arel 构建查询。我发现 this howto 看起来不错,但我遇到了错误。尽管这些示例是多年前创建的并且基于很少的搜索,但事情看起来是一样的。我有一个简单的模块 class:

users = ::MyModule::User.arel_table
query = users.where(users[:name].eq('amy'))

在我 运行 query.to_sql 之后,我在 rails 控制台中看到:


"SELECT FROM `users` WHERE `users`.`name` = 'amy'"

这是不正确的。我希望看到:


"SELECT * FROM `users` WHERE `users`.`name` = 'amy'"

“全部”* 丢失。这是我应该提出的错误吗?因为它缺少“*”,所以我的查询失败了。

今天是我使用 Arel 的第一天。

你需要告诉 Arel 你想要什么 select:

users = ::MyModule::User.arel_table
query = users.project(users[Arel.star]).where(users[:name].eq('amy'))

尽管使用将参数化的 ActiveRecord 查询接口会容易得多:

query = ::MyModule::User.where(name: 'amy').arel
# SELECT "users".* FROM "users" WHERE "users"."name" = ?