Блок не введен в ActiveRecord_Relation - PullRequest
0 голосов
/ 17 мая 2019

Я новичок в Ruby и RoR.

У меня есть метод класса, который выглядит следующим образом:

def self.show_all_expired
  puts "\r\n COUNT: #{self.expired.all.count}\r\n"
  self.expired.all do |s|
    puts "\r\n COUNT: #{s}\r\n"
  end
  puts "\r\nEND\r\n"
end

Когда я запускаю его из консоли, я получаю такой вывод:

enter image description here

Как видите, коллекция подписок не повторяется, а тело блока вообще не вводится.Но количество запросов 31, поэтому должны быть записи.Почему do блок не выполняется?

1 Ответ

1 голос
/ 17 мая 2019

Глядя на документы, вы видите, что all не ожидает блока.Он просто возвращает объект области ActiveRecord :: Relation.

Вместо этого вы хотите использовать each, который вызывает данный блок один раз для каждого элемента в коллекции строк:

self.expired.each do |s|
  puts "\r\n Subscription: #{s.inspect}\r\n"
end

Или find_each, если вы имеете дело с большим количеством записей.

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