2011-04-18 5 views
1

Новые рельсы .... все еще пытаются понять все «методы»Рельсы Найти конкретную запись в подкатегории

Таблица называется Истории.

@compa = History.scoped(:limit => 10,:conditions => {:name => "IBM"}, :order => "closedate ASC") 

Теперь я хочу, чтобы найти, если что @compa подмножество таблицы содержит запись, где closedate = конкретную дату. Я пробовал всевозможные методы, но ничего не работает.

Пример:

if (@compa.has_value?(tmp)) 

не работает.

Должен ли я работать в подмножестве или возвращаться к таблице и выполнять новую область? Как я могу работать в подмножестве ... Я упускаю то, что я уверен.

ответ

2

Таким образом, вы хотели бы что-то вроде:

if(@compa.include?(tmp)) 

Чтобы увидеть, если @compa имеет значение, tmp.

Однако @compa содержит атрибуты, отличные от закрытых. Таким образом, вы хотели бы:

@compa.find{|o| o['closedate'] == tmp} 

Это вернет ноль, если он не содержит это значение, в противном случае он возвращает объект, который действительно имеет closedate равный tmp.

Однако почему бы не использовать SQL справиться с этим:

С @compa является связь ActiveRecord (потому что вы назвали Scoped), вы можете запросить его больше, делая что-то вроде:

@compa.where(:closedate => tmp).exists? 

Ссылки:

Array#include

Enumerable#find

exists?

+0

Спасибо! Где метод работает отлично! Можете ли вы побаловать меня и объяснить | o | и o ['closedate'] в поиске? Кажется, это не работает для меня, я получаю только нуль. – Dwarfer