如何让sql只有条件?Rails的activerecord在哪里sql
Lead.where(status: 1).to_sql
SELECT `leads`.* FROM `leads` WHERE `leads`.`status` = 1
我只需要条件的SQL。即, leads.`status` = 1
此外我有默认范围。从我只需要该范围为sql
如何让sql只有条件?Rails的activerecord在哪里sql
Lead.where(status: 1).to_sql
SELECT `leads`.* FROM `leads` WHERE `leads`.`status` = 1
我只需要条件的SQL。即, leads.`status` = 1
此外我有默认范围。从我只需要该范围为sql
您可以使用Arel::SelectManager#where_sql
:
>> Lead.where(status: 1).arel.where_sql
=> "WHERE \"leads\".\"status\" = $1"
是否有任何选项来获得唯一的条件字符串,不** ** WHERE –
您可以编写自定义访问者来执行此操作:https://gist.github.com/tcopeland/9715f83c7cb516209491996bf2442476 –
我觉得有一些资料,这个问题缺少。你想通过这个实现什么?如果你只需要SQL片段,你可以很容易地把它写成一个字符串。如果你想执行SQL,那么你根本不需要to_sql。 – AJFaraday
只是'leads.status = 1'没有意义。你将如何解释加入和别名表的信息? – kiddorails
@AJFaraday它只是一个例子。我必须执行复杂的SQL。但取决于用户角色,范围将发生变化。所以我需要将该范围转换为SQL。然后,只有我可以将该范围sql添加到我的原始sql。 –