我有一个使用ActiveRecord 3.0.3的Rails3应用程序。
我试图根据该表中的2个子查询字段获取表的总和。
使用Rails控制台,我可以让它返回正确的值,如下所示:
result = MyObject.sum(:foo, :conditions => "foo_id = #{self.id} AND bar_id = #{self.bar_id}" )
但是,我无法使用这样的东西:
result = MyObject.sum(:foo, :conditions => "foo_id = ? AND bar_id = ?", self.id, self.bar_id )
这样做会导致: 语法错误,意外',',期待tASSOC
我的问题:所以,我有代码可以产生正确的值。但我担心可能的SQL注入这样做吗?通常,您将使用带有活动记录查询的参数,这看起来更像是连接。
我还在学习Active Record。 谢谢你的任何建议。
答案 0 :(得分:1)
我想我只是想通了。很难找到这样的例子,但只是用括号括起args(将它们分组成一个数组)。
所以:
result = MyObject.sum(:foo, :conditions => "foo_id = #{self.id} AND bar_id = #{self.bar_id}" )
变为:
result = MyObject.sum(:foo, :conditions => ["foo_id = ? AND bar_id = ?", self.id, self.bar_id] )