почему uniq!метод работы, но сортировать!не на этом массиве в рельсах? - PullRequest
0 голосов
/ 20 октября 2010

Вот как я создал массив:

@companies_with_email = Company.contact_emails_date_sent_gt(@monday).
                                contact_emails_date_sent_lt(@friday).
                                find(:all, :select => "distinct companies.* ") || []

@companies_with_call = Company.contact_calls_date_sent_gt(@monday).
                                contact_calls_date_sent_lt(@friday).
                                find(:all, :select => "distinct companies.* ") || []

@companies_with_activity = @companies_with_email + @companies_with_call
@companies_with_activity.uniq!

Однако я хочу, чтобы он был в алфавитном порядке, поэтому я попытался добавить .sort!и я получил сообщение о том, что <=> метод не существует.

undefined method `<=>' for #<Company:0x9d506a8>

1 Ответ

4 голосов
/ 20 октября 2010

Сортировочные компании не "просто работают". Это сообщение об ошибке означает, что просто невозможно сравнить (используйте оператор сравнения <=>, в данном случае) две компании, поскольку он не знает, что вы хотите сравнить: идентификатор в базе данных, имя, идентификатор в Ruby. память и т. д.

Вы можете самостоятельно определить поведение сортировки:

@companies_with_activity.sort! { |a,b| a.name <=> b.name }
...