2017-02-14 3 views
1

При переходе с рельсов 4.2.6 к 5.0.1, я получаю некоторые ошибки:Rails версии миграции вопрос (Rails 4.2 до 5.0)

undefined method `push' for #<User::ActiveRecord_Relation: 

при этом:

@users = User.includes(:account).order(:last_name) 
@users.push(new_user) 
+0

Является ли это 'неопределенный метод толчок» для # 'полная ошибка ? Должно быть имя класса после ** # ** Я считаю. – Sajan

+0

Это полная строка: неопределенный метод 'push 'для # Jaswinder

+0

Вы пробовали ответить Дипак? Это должно сработать для вас. – Sajan

ответ

1

Одна точка отметить здесь @users есть ActiveRecord отношение. Такого метода нет push для ActiveRecord отношение.

push метод поддерживается Array, Таким образом, вы можете конвертировать результат в массив, а затем нажмите new_user в результате `Arraya

@users = User.includes(:account).order(:last_name) 
@users.to_a.push(new_user) 
+0

Также упоминается, что concat и push работают одинаково. Но concat не работает. Получая ту же ошибку. – Jaswinder

0

ActiveRecord::Associations::AssociationCollection#push был deprecated and removed от ActiveRecord 5. Вы можете попытаться преобразовать отношение к массиву до нажатия:

@users = User.includes(:account).order(:last_name).to_a 
@users.push(new_user) 

или найти подобный доступный метод в ActiveRecord 5. Например there is concat method:

@users = User.includes(:account).order(:last_name) 
@users.concat([new_user]) 
+0

Да, метод push был устаревшим, но было бы хорошо, если бы вы могли указать любой другой метод вместо него – Jaswinder

+0

@GstjiSaini см. Обновленный ответ –

Смежные вопросы