Я работаю над приложением Rails 3, и у меня есть строка в одном из моих контроллеров, которая выглядит следующим образом:
@features = Feature.find(:all, :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
@feature = @features.find(params[:feature])
Идея состоит в том, чтобы получить набор «функций» из БД с учетом некоторых ограничений, а затем выбрать один из них из этого набора. Если рассматриваемая запись существует в БД, но не соответствует ограничениям, я НЕ хочу ее возвращать. Таким образом, я делаю @features.find
, а не Feature.find
.
Проблема, с которой я столкнулся, заключается в том, что для представления требуется @feature.title
, что приводит к ошибке:
undefined method 'title' for #<Enumerator:0x0000010216efd8>
Конечно, я могу обойти проблему, заменив вышеприведенное на это, где я просто дважды определяю ограничения:
@features = Feature.find(:all, :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
@feature = Feature.find(params[:feature], :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
Но это кажется не элегантным и немного избыточным.
Какое лучшее решение? Как я могу обработать мой результат @features.find
как Feature
, а не Enumerator
, в котором отсутствуют переменные / методы, которые мне нужны для доступа в представлении?
Спасибо за любые мысли по этому поводу.