Объединить запись в ActiveRecord Relation - PullRequest
0 голосов
/ 22 декабря 2018

Я извлекаю запись как:

def self.imp_broadcast_preview!
  Broadcast.where(for_gamers: true).order(:created_at).last
end

И затем в моем контроллере у меня есть:

def index
  @conversations = Conversation.where(gamer: @gamer)
  @conversations << Broadcast.imp_broadcast_preview!
end

Приведенный выше код корректно работает в Rails 4.2 и объединяет последнее широковещательное сообщениев разговорах.Я только что обновил свою кодовую базу до Rails 5.2, и теперь я получаю сообщение об ошибке:

NoMethodError (undefined method `<<' for #<Conversation::ActiveRecord_Relation:0x00007fd2541baca0>)

Я попытался использовать merge, но это также выдает ошибку, поскольку broadcast не является activerecord relation

1 Ответ

0 голосов
/ 22 декабря 2018

Эта функциональность была удалена в rails 5.0, вы можете проверить https://github.com/rails/rails/issues/25906. Там вы найдете, почему она была удалена, и ссылку на коммит, который удалил эту функциональность.

Чтобы сделать вашДля работы с кодом вам нужно преобразовать в массив первый результат, таким образом << будет работать:

def index
  @conversations = Conversation.where(gamer: @gamer).to_a
  @conversations << Broadcast.imp_broadcast_preview!
end
...