Я пытаюсь вызвать область модели ActiveRecord с контроллера. Но когда я это делаю, он просто возвращает нуль, даже если запрос работает отлично.Основные рельсы - область действия ActiveRecord не работает
Вот модель:
class Stats < ActiveRecord::Base
scope :by_latest_date, ->{select("date, sum(users) AS users,
sum(clicks) AS clicks").group("date").limit(1)}
end
Область: by_latest_date должна возвращать суммы пользователей и кликов за последний день записи. Но когда я называю его от контроллера:
class ChartsController < ApplicationController
def user_stats
@stats = Stats.by_latest_date
end
end
@stats просто устанавливается в ноль, когда есть записи в базе данных. Когда в базе данных нет записей, устанавливается пустой массив.
Я не понимаю, почему. Код работал, когда я копировал/вставлял запрос области в контроллер, а также работал, когда я ставил Stats.by_latest_date непосредственно в свой тест RSPEC. Возможно, что-то особенное в контроллерах и блоках видимости? Но если есть, я не смог бы найти его.
Вам не хватает ',' перед тощей стрелкой ?, он должен разорвать тест, хотя ... – kurenn
yep, он есть в моей программе, поэтому я добавил его к вопросу. Код здесь перефразирует, а не точно копирует мой код. –
Вы пытаетесь использовать лямбду вместо ловкой стрелы или даже поместить ее в классный метод? – kurenn