Rails: как сделать область видимости метода класса для обработки нулевых аргументов - PullRequest
2 голосов
/ 09 марта 2012

Я начал использовать области действия метода класса, потому что мне нужно передать аргумент в область видимости. Возьмем пример Rails Guide:

  def self.1_week_before(time)
    where("created_at < ?", time)
  end

Однако на моем сайте аргумент может быть нулевым, в этом случае я хочу обойти эту область видимости и перейти к следующей области в цепочке.

Я добавил условие if в метод:

  def self.1_week_before(time)
    if time
      where("created_at < ?", time)
    end
  end

Однако, когда я использую этот метод в середине цепочки областей, он дает неопределенный метод для ошибки nil: NilClass. Как я могу это исправить?

1 Ответ

4 голосов
/ 09 марта 2012

Возвращает nil, поэтому вы получаете сообщение об ошибке:

def self.1_week_before(time)
  if time
    where("created_at < ?", time)
  end
end

Чтобы предотвратить это, вы можете вернуть scoped:

def self.1_week_before(time)
  if time
    where("created_at < ?", time)
  else
    scoped
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...