Rails: доступ к записям, где выполняются два условия

#ruby-on-rails #activerecord #where

#ruby-on-rails #activerecord #where-предложение

Вопрос:

Я пытаюсь получить доступ к количеству записей «customer», которые были созданы сегодня. Что-то вроде:

 @customersToday = User.where("created_at >= ?", Date.today,  user_type: 'Customer').count
  

Как я могу сделать это в одном запросе (который работает)?

Комментарии:

1. Как это еще не один запрос?

2. Это один запрос. Возможно, перефразируйте свой вопрос?

3. Запрос в моем вопросе не работает

Ответ №1:

 @customersToday = User.where("created_at >= ? and user_type = ?", Date.today, 'Customer').count
  

Ответ №2:

Ваш запрос должен выполняться одним запросом, но вы можете упростить его, создав пару областей

 class User < ActiveRecord::Base
  scope :today, -> { where ["created_at >= ?", Date.today] }
  scope :customers, -> { where user_type: 'Customer' }
end
  

Теперь вы можете запустить

 User.customers.today.count
  

Комментарии:

1. Это выдало мне ошибку no method. Пробовал как User.customer.today.count, так и User.customers.today.count