Использование инструкции области ActiveRecord для возврата одного результата

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

class License < ActiveRecord::Base
  scope :active, lambda {
    where("active_from <= ?", Date.today).order("version_number DESC")
  }
end

def current_license
  return License.active.first
end

public :current_license

Я пытался добавить .first в lambda пункт, но это вызывает ошибку.

Как мне рассказать scope Я хочу только первый результат, и таким образом исключить метод current_license полностью?

1 ответ

Решение

Сделайте это методом, и вы можете получить это:

class License < ActiveRecord::Base

  def self.current_license
    return License.where("active_from <= ?", Date.today).order("version_number DESC").first
  end

end

Что касается количества результатов, попробуйте добавить .limit(1), Для получения дополнительной информации, посмотрите здесь.

Другие вопросы по тегам