2010-06-30 116 views
3

從數組中刪除元素是否有某種短手的用於Ruby on Rails的:由ID

@notifications = Notification.find(:all, :conditions => ['expires_at > ?', Time.now]) 

    notif = Notification.find(:all, cookie[0].to_i) 
    @notifications.delete(notif[0]) if not notif.empty? 

cookie被存儲到餅乾的通知的ID。 這是一個迭代,它刪除用戶不想看到的通知。

謝謝! =)

回答

7

如果這是一個activerecord對象數組,您可以像這樣從數據庫中刪除。

Notification.delete_all(:id => cookie[0].to_i)

如果這僅僅是一個數組,那麼你可以使用刪除,如果

@notifications.delete_if{|x| x == cookie[0].to_i}

+0

陣列沒有方法,DELETE_ALL。 = \ – NullVoxPopuli 2010-06-30 23:49:47

+0

這是一個activerecord對象的數組?如果是這樣,所以你想從數組中刪除或刪除數據庫?我添加了一行從數組中刪除。不完全確定現在有哪些@notifications。 – 2010-07-01 00:06:36

+0

關閉,@ notifications.delete_if {| x | x.id == cookie [0] .to_i} 做了訣竅。感謝您的幫助! – NullVoxPopuli 2010-07-01 01:15:31

0

現在你可以只使用delete_at(index)方法:

array = ['item0', 'item1', 2, 3] 
array.delete_at 1 
# => "item1" 
array.delete_at 2 
# => 3 
array 
# => ["item0", 3] 

你可以與slice!(index)一樣。

注意:delete_at是一種增變方法,即使它不在!中結束,所以不要依賴它的返回值,它只會是刪除的項目。

參考: http://ruby-doc.org/core-2.2.0/Array.html#method-i-delete_at