Активная запись сумма с 2-мя аргументами - PullRequest
0 голосов
/ 05 декабря 2010

У меня есть приложение Rails3, использующее ActiveRecord 3.0.3.

Я пытаюсь получить сумму для таблицы на основе 2 полей подзапроса в этой таблице.

Используя Rails Console, я могу вернуть его с правильным значением, например:

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 Ответ

1 голос
/ 05 декабря 2010

Я думаю, я только что понял это.Трудно было найти примеры для этого, но просто заключите аргументы в скобки (сгруппировав их в массив).

Итак:

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] )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...