2016-10-31 17 views
0

特定のモデルのすべてのレコードを取得し、それぞれのインデックスをname属性で検索したいとします。最終結果はハッシュでなければなりません。キーはレコードの名前で、値はレコードです。すべてのレコードをRailsでカスタムメソッドでグループ化

def self.all_by_name 
    hash = {} 
    all.each { |model| hash[model.name] = model } 
    hash 
end 

アクティブなレコードクエリでこれを行う方法はありますか?

答えて

0

いいえ、アクティブなレコードは、アレイまたはアクティブなレコードの関係を返しますどちらか。あなたは、あなたが選んだデータ型にそれをマッサージしなければなりません。 ActiveRecorは、SQLが通常返し得るものを返します。しかし、groupメソッドを使用することができます。これは基本的にはSQLのgroup byです。

同じクラスのオブジェクトが2つある場合は、キーの値を上書きするように見えるので、あなたのメソッドが行うべきことがわからない場合があります。おそらく、あなたが必要とするものをより明確に定義しておけば、私はあなたをより良く助けることができます。

+0

フィードバックいただきありがとうございます。配列をハッシュに変換するだけで、オブジェクトを参照するためのハッシュを利用できます。私は高価なアルゴリズムで作業していますので、配列を常に繰り返し処理するのではなく、これらのオブジェクトを一度ハッシュする方が早いです。モデル名はユニークなので、上書きする心配はありません。これは一般的なテクニックなので、わからない簡単な方法があることを期待していました。 – CodeSmith

関連する問題