我已经广泛搜索了这个问题的答案,显然整个世界都没有人遇到过这个问题。我正在使用这些宝石:
ruby 1.9.3p551 铁轨(4.2.5.1,4.2.5) arel(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'它去了哪里?为什么不在那里?如何在不手动解析字符串的情况下添加它?
答案 0 :(得分:0)
您可以使用#project
,例如:
users = Arel::Table.new(:users)
users.where(users[:email].eq('jon@doe.com')).project('*').to_sql
=> "SELECT * FROM \"users\" WHERE \"users\".\"email\" = 'jon@doe.com'"
而不是在其中对*
进行硬编码,您可以使用Arel.star
,就像这样
Arel::Table.new(:users).where(users[:email].eq('...')).project(Arel.star).to_sql