在Rails 3中使用数组格式的find_by_sql

时间:2012-06-11 09:05:09

标签: ruby-on-rails-3 activerecord model find-by-sql

美好的一天!

我在rails 3中使用 find_by_sql()来获取记录,如下所示。

@list=Email.find_by_sql(["SELECT * FROM Emails WHERE sent_id=?",params[:id]])

如果多个参数适用于同一属性,如何修改相同的语句,例如:

@list=Email.find_by_sql(["SELECT * FROM Emails WHERE (sent_id=? OR from_id=?)",params[:id],params[:id]])

此处, sent_id from_id 属性都会收到相同的参数 params [:id]

所以,不是两次传递相同的 params [:id] ,是否有任何机制可以根据顺序传递参数?

1 个答案:

答案 0 :(得分:20)

您可以使用散列来命名插值,如下所示:

@list = Email.find_by_sql(["SELECT * FROM Emails WHERE (sent_id = :id OR from_id = :id)", {:id => params[:id]}])