Использование Rails ActiveRecord для запроса несохраненных объектов - PullRequest
5 голосов
/ 16 ноября 2011

Можно ли запросить несохраненные изменения с помощью RailR ActiveRecord или другого подобного подхода?

Пример интерактивного сеанса Ruby приведен ниже. Что я хотел бы видеть, так это то, что четвертая строка показывает результат «999» вместо «10». Я использую .NET и Entity Framework, где возможно что-то подобное. Возможно, в Ruby есть лучший или другой способ сделать то же самое. Очевидно, я мог бы сложить сумму в цикле, но я нахожу синтаксис запроса более элегантным. Любая помощь приветствуется.

i = Inventory.where(:product_id => 1)
i.sum(:available) => 10
i.first.available = 999
i.sum(:available) => 10

1 Ответ

4 голосов
/ 16 ноября 2011

Нет, поскольку sum() фактически транслируется в SQL и выполняется на БД, вы должны сохранить запись в БД, чтобы запрос возвратил желаемый результат.используйте метод Enumerable # sum в ActiveSupport, который принимает блок, например:

all = Inventory.where(:product_id => 1).to_a
all.first.available = 999
all.sum(&:available)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...