Как мне выполнить поиск ActiveRecord и удалить всех вплоть до определенной записи из массива?

#ruby-on-rails #activerecord

#ruby-on-rails #activerecord

Вопрос:

Я только что попытался выполнить метод, и он потерпел неудачу после попадания на определенный объект.

Зная атрибут email этого объекта, как я могу создать массив и ограничить возврат только теми объектами, которые находятся после этого конкретного объекта?

Это проект Rails 2

Ответ №1:

Я бы сказал:

 your_array.take_while {|elt| elt.email != email }
  

Или для 1.9.2:

 your_array.slice_before{|elt| elt.email == email }.first
  

Комментарии:

1. Hmm..is это метод rails 3? Я должен отметить, что я использую Rails 2

2. .take_while работает отлично! Боже, ты настоящий гений ruby, раз знаешь эту маленькую жемчужину.

3. действительно здорово взглянуть на все сокровища модуля Enum 🙂

Ответ №2:

если у вас есть массив, попробуйте что-то вроде

 irb(main):030:0> ary = [ 1, 2, 3, 4, 5, 6, 7 ]
=> [1, 2, 3, 4, 5, 6, 7]
irb(main):031:0> ary.values_at( ary.index(4)..-1 )
=> [4, 5, 6, 7]
  

Ответ №3:

Это может помочь, так как where вернет все записи после id == id

 id = SomeModel.where( :email => 'email_you@kn.ow' ).first.id

SomeModel.where( "id > ?", id )
  

Комментарии:

1. Так завидую Rails 3 прямо сейчас, потому что это вопрос Rails 2. Спасибо за ответ, хотя!