【问题标题】:Active Record sum with 2 args带有 2 个参数的 Active Record 总和
【发布时间】:2010-12-05 20:07:11
【问题描述】:

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

【问题讨论】:

    标签: activerecord


    【解决方案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] )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-08
      • 2019-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多