Проблемы определения целочисленных значений с помощью rails scopes gem - PullRequest
0 голосов
/ 01 июня 2019

У меня есть модель 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.
...