Я использую C9 облако рубин на рельсах и мою версию Rails является 5.0.0.1активный порядок записи запроса, где первый
Я хочу, чтобы составить запрос ActiveRecord, чтобы выбрать ресторан с лучшим рейтингом, который не был посетивший вчера , Когда я применил all
where
, order
и first
в запросе, он выдает ошибку. Однако, если я не использую where
или order
, он отлично работает.
Это работает:
restaurant1= Restaurant.order('rating').last!
@suggested_restaurants=restaurant1.name
Это дает странные результаты:
restaurant1=Restaurant.order('rating').where{last_visit<Date.yesterday}
@suggested_restaurants=restaurant1
Результаты:#<ActiveRecord::QueryMethods::WhereChain:0x000000046af7f8>
Это вызвало ошибку:
restaurant1=Restaurant.order('rating').where{last_visit<Date.yesterday}.last
@suggested_restaurants=restaurant1
Ошибка:undefined method 'last' for #ActiveRecord::QueryMethods::WhereChain:0x00000004587a10>
я могу обойти эту проблему с помощью find_by_sql
, но я хотел бы знать, почему и как использовать where
в Rails 5. Большое спасибо!
Результат намного лучше: # <Ресторан: 0x00000003e1aea8>. Я пойду оттуда. Благодаря! –
Кроме того, может помочь мне понять, почему ваши «рестораны» могут генерировать коллекцию, пока мой код не может. –
вы приковали метод заказа до того, где метод. Я попытался заказать вашу коллекцию, не найдя на самом деле их первые – sa77