2012-03-12 17 views
0

我有數組:紅寶石陣列名稱quals下一個名字

我有數據庫,並從那裏記錄。

爲例(其中db =模型)

db = DB.find(:all) 

records = db.name 

records.to_a 

,知道,我該怎麼辦檢查(因爲我在DB similiar記錄):

if record name == next record name 
puts "yes, smiliar" 
else 
puts ":(" 
end 

我需要檢查當前的陣列名稱到下一個,如果等於我上面顯示的只是放「是」

+0

'record = db.name'是什麼意思?如果DB是一個模型,那麼'DB.find(:all)'應該返回一個沒有'name'方法的數組。 – evfwcqcg 2012-03-12 09:41:32

+0

看起來像是一個家庭作業。 – Dogweather 2012-03-12 09:54:42

回答

0

比較以前的記錄更容易。也許你可以解決你的問題是這樣的:

prev = nil 
records.each do |record| 
    if record.name == prev.name 
     puts "similar" 
    else 
     puts ":(" 
    end 
    prev = record 
end 
5

比較數組兩個元素,你可以使用each_cons方法

[1,2,2,2,1].each_cons(2) do |a| 
    puts (a.first == a.last) ? "similar" : ":(" 
end 

# => :(
# => similar 
# => similar 
# => :(
0

如果你不關心的順序,我會使用GROUP_BY :

db = DB.find(:all, :select => 'name').collect(&:name) 
arr = = Array[db.group_by {|x| x}.map {|k,v| k if v.size > 1}] 
arr.compact! 

:select => 'name'部分是可選的,但有助於保持較小的查詢。

這將返回一個不是唯一的名稱列表