活动记录总和2 args

时间:2010-12-05 20:07:12

标签: activerecord

我有一个使用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。 谢谢你的任何建议。

1 个答案:

答案 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] )