我不确定你能不能。
但
Model.where(:id => 1)
应该生成一个准备好的语句。片段字符串的工作方式不同,因此您可以在自定义情况下准确生成所需的内容。
编辑 :
试试这个,我不确定它是否有效,我现在不能测试,但它看起来像你需要的:
Client.where("created_at >= :start_date AND created_at <= :end_date",
{:start_date => params[:start_date], :end_date => params[:end_date]})
更多信息:http: //guides.rubyonrails.org/active_record_querying.html#conditions
在占位符部分。此外,日期范围以数组格式工作:
:date => date_begenning..date_end
编辑2:确实可以,但我似乎不支持手动构建它。
您可以手动构建准备好的查询:
http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-exec_query
exec_query(sql, name = 'SQL', binds = [])
您的关系还有一个绑定方法。
但是这两个绑定都需要值有一个名称方法,如果你给出一个固定编号、一个哈希等,它们会崩溃。我没有找到任何文档解释这是如何工作的。
Bu 对于 where 子句,只要它是 Class String 的,activeecord 就会在其上应用一个 .to_sql,所以你不会得到你准备好的语句。