9

良い一日!

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]を2回渡す代わりに、順序に基づいてパラメーターを渡すために使用できるメカニズムはありますか?

4

1 に答える 1

20

次のように、ハッシュを使用して補間値に名前を付けることができます。

@list = Email.find_by_sql(["SELECT * FROM Emails WHERE (sent_id = :id OR from_id = :id)", {:id => params[:id]}])
于 2012-06-11T14:36:44.873 に答える