3

品質フィールドを含むユーザーモデルがあります。フィールドのデータ型はfloatです。

次に、すべてのユーザーを品質範囲に従って次のようにグループ化します。

[65 - 75],[75 - 85], [85 - 95] and [95 - 100]

注:あるグループでは65〜75、別のグループでは75〜85の品質のすべてのユーザーが必要です。

ActiveRecordでこれを達成するにはどうすればよいですか。

ありがとう

4

2 に答える 2

-1

さてあなたはこのような機能をgroup使うことができます: havingActiveRecord

Model.select(:quality).group(:quality).having("quality > 65 AND quality < 75")
Model.select(:quality).group(:quality).having("quality > 75 AND quality < 85")
Model.select(:quality).group(:quality).having("quality > 85 AND quality < 95")
Model.select(:quality).group(:quality).having("quality > 95 AND quality < 100")
于 2012-08-28T11:41:51.503 に答える
-1
User.where(:quality => (65..75))
User.where(:quality => (75..85))
User.where(:quality => (85..95))
User.where(:quality => (95..100))

または、単一のクエリが必要な場合は、次の 3 つのオプションがあります。

  • 文字列形式の使用

    User.where("(quality >= 65 AND quality <= 75) OR (quality >= 75 AND quality <= 85) OR (quality >= 85 AND quality <= 95) OR (quality >= 95 AND quality <= 100)").group(:quality)
    
  • OR 句を使用して SQL を記述する

  • ARel gemの使用。
于 2012-08-28T11:47:42.623 に答える