Ruby on Rails: удалить элемент из массива по id - PullRequest
3 голосов
/ 01 июля 2010

Есть ли какая-то короткая рука для

  @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 - это идентификатор уведомления, сохраняемого в cookie. это итерация, которая удаляет уведомления, которые пользователь не хочет видеть.

спасибо! =)

Ответы [ 2 ]

8 голосов
/ 01 июля 2010

Если это массив объектов activerecord, вы можете удалить его из базы данных следующим образом.

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

Если это просто массив, то вы можете использовать delete

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

0 голосов
/ 08 марта 2015

Теперь вы можете просто использовать метод 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 / ядро-2.2.0 / Array.html # метод-я-delete_at

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...