Предположим, у меня есть следующее действие:
def index
@posts = Post.joins(:tags).where(:tags => {:id => params[:tag_id]})
end
Предоставляет @posts
представлению, которое будет отображать каждое сообщение с данным тегом.
Все работает нормально, но я застрял, пытаясь найти лучший способ проверить это.
Мне не очень нравится издеваться, так как это может затормозить тест, если я поменяю эту строку на:
@posts = Post.where(:tags => {:id => params[:tag_id]}).joins(:tags)
Я не хочу использовать базу данных, так как это уменьшит скорость тестирования, но я рассматриваю возможность извлечения запроса в метод внутри модели и его тестирования там, если это единственный способ сделать это. .
РЕДАКТИРОВАТЬ: Да, я знаю, что я мог бы использовать Tag.find(params[:tag_id])
в этом случае, но это не то, о чем вопрос. Я просто не хотел вводить в запрос другую модель и усложнять объяснение отклонения фокуса от реальной проблемы, а именно: должны ли мы хранить сложные запросы в контроллере? Если да, то как лучше всего это проверить?