为什么uniq!方法工作,但排序!不在轨道上的这个阵列?

时间:2010-10-20 00:34:29

标签: ruby-on-rails arrays sorting unique

以下是我创建数组的方法:

@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 个答案:

答案 0 :(得分:4)

排序公司不“只是工作”。该错误消息的含义是没有办法只比较(在这种情况下使用比较运算符<=>)两家公司,因为它不知道你要比较什么:数据库中的ID,名称,ID在Ruby内存等

您可以自己定义排序行为:

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