Использование инструкции области ActiveRecord для возврата одного результата - PullRequest
3 голосов
/ 27 сентября 2011

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

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 Ответ

2 голосов
/ 27 сентября 2011

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

class License < ActiveRecord::Base

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

end

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

...