2016-10-15 6 views
0

に属している与えられたために、テーブルからすべてのレコードを選択:今数が、私は私のモデルで3つのレコード次したとし

#<Rda:0xf6e8a0c 
id: 1, 
age_group: "18-100", 
weight: "60", 
nutrient: "energy(kcal/day)", 
value: "2730", 
created_at: Sat, 15 Oct 2016 08:21:43 UTC +00:00, 
updated_at: Sat, 15 Oct 2016 08:21:43 UTC +00:00> 


#<Rda:0xf6e8a0c 
id: 2, 
age_group: "10-15", 
weight: "60", 
nutrient: "energy(kcal/day)", 
value: "2730", 
created_at: Sat, 15 Oct 2016 08:21:43 UTC +00:00, 
updated_at: Sat, 15 Oct 2016 08:21:43 UTC +00:00> 


#<Rda:0xf6e8a0c 
id: 3, 
age_group: "20-100", 
weight: "60", 
nutrient: "energy(kcal/day)", 
value: "2730", 
created_at: Sat, 15 Oct 2016 08:21:43 UTC +00:00, 
updated_at: Sat, 15 Oct 2016 08:21:43 UTC +00:00> 

を、私は私の与えられた値が 'に落ちているすべてのそれらのレコードを取得したいですage_group '列の範囲です。例えば:私の年齢が「25」は'18 -100' と'20 -100' の間に落ちるので、25そして、私は

答えて

3

を上記記録からIDS 1 & 3のレコードを取得する必要がありますあなたは

を行う可能性がありますであると仮定
def self.foo(age) 
    all.select { |rda| Range.new(*rda.age_group.split('-').map(&:to_i)).cover? age } 
end 
+0

これは素晴らしい解決策です。問題が発生している理由は、データ構造が正規化されていないためです。年齢グループに文字列 "10-15"を使用する代わりに、2つの整数値、age_lower_boundとage_upper_boundが必要です。その後、Active Recordでこれをすべて実行できます。 –

+0

私の問題は解決します。 – user3779329

+0

あなたは大歓迎です:) – Ursus

関連する問題