我一直在广泛地寻找这个问题的答案,显然全世界没有人遇到这个问题。我正在使用这些宝石:
红宝石1.9.3p551
导轨(4.2.5.1,4.2.5)
竞技场(6.0.3)
战神助手(2.2.0)
这是我在控制器中使用的语法:
table = Arel::Table.new(:table)
query = table.where( u[:column].eq(current_user.id) )
@rows = Conversation.find_by_sql( query.to_sql )
这是我加载该页面时遇到的错误
Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `table` WHERE `table`.`row` = 1' at line 1: SELECT FROM `table` WHERE `table`.`row` = 1
具体来说,您可以看到以下内容:
SELECT FROM `table` WHERE `table`.`row` = 1
如您所见,'SELECT * FROM'中缺少'*'的地方?为什么不在那里?如何在不手动解析字符串的情况下添加它?
最佳答案
您可以使用#project
这样,如下所示:
users = Arel::Table.new(:users)
users.where(users[:email].eq('[email protected]')).project('*').to_sql
=> "SELECT * FROM \"users\" WHERE \"users\".\"email\" = '[email protected]'"
您可以使用
*
,而不是在其中对Arel.star
进行硬编码。Arel::Table.new(:users).where(users[:email].eq('...')).project(Arel.star).to_sql
关于mysql - Arel gem:Rails的where子句中缺少“SELECT *”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35090609/