我有一种情况,我需要允许从表单手动构建 SQL。我有这样的事情:
SomeModel.where("id in (#{custom_sql})")
custom_sql
像这样的选择语句在哪里:
SELECT u.id FROM some_model u WHERE country_iso = 'AU'
我希望能够捕获当 where 子句中存在无效 SQL 时引发的 StatementInvalid 异常,但我不知道该怎么做。
begin
SomeModel.where("id in (#{custom_sql})")
rescue
puts "Error"
end
但它不断地失败而没有错误。然而rails c
,当我这样做时User.where("id in (#{custom_sql})")
,它会正确出错。有任何想法吗?