/ /なぜuniqなのか!メソッドは機能しますが、並べ替えます。 Railsのこのアレイにはありませんか? --ruby-on-rails、arrays、sorting、unique

なぜユニークなのですか?メソッドは動作しますが、ソート!レールでこの配列にないのですか? - ruby​​-on-rails、配列、ソート、ユニーク

配列を作成した方法は次のとおりです。

@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

会社の並べ替えは「うまくいく」わけではありません。そのエラーメッセージが意味するのは、単に比較する方法がないということです(比較演算子を使用してください)。 <=>、この場合)2つの会社、何を比較するかわからないため、データベース内のID、名前、Rubyメモリ内のIDなど。

ただし、ソート動作は自分で定義できます。

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