У меня есть модель CoffeeShops, которая включает целочисленное значение wifi_restrictions.
Целочисленное значение этого поля будет представлять количество часов, которое вы можете использовать Wi-Fi.
Я пытаюсь настроить области для этого, чтобы я мог искать
CoffeeShop.has_wifi_restrictions
... и он вернет все кофейни со значением wifi_restrictions, которое больше 0.
Я использую камень rails has_scope:
https://github.com/plataformatec/has_scope
Я перепробовал все возможные варианты реализации области действия в модели, но синтаксис этого блока заставляет мою голову вращаться.
Я также попробовал оба
has_scope :has_wifi_restrictions, type: :boolean
а также
has_scope :has_wifi_restrictions, type: :integer
Я не уверен, что это должно быть. Дополнительный вопрос здесь заключается в том, превращает ли блок области действия в модель целочисленное значение в логическое значение в рамках нового метода области действия.
т.е.
my_coffee_shop.wifi_restrictions = 1
преобразуется в
my_coffee_shop.has_wifi_restrictions = true
Я не уверен, как именно это работает или как правильно его реализовать.
Я знаю, что в моей модели мне нужно что-то вроде следующего:
class CoffeeShop < ApplicationRecord
scope :has_wifi_restrictions, ->(hours) { where(wifi_restrictions: hours.positive?) }
end
А в контроллере мне нужно что-то вроде:
class CoffeeShopsController < ApplicationController
has_scope :has_wifi_restrictions, type: :boolean
end
Когда я пытаюсь сделать поиск
CoffeeShop.has_wifi_restrictions
Я получаю следующее:
ArgumentError: wrong number of arguments (given 0, expected 1)
-
* 1046.