2017-02-14 98 views
1

当从轨道迁移4.2.65.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

这是完整的行:未定义的方法'推'为# Jaswinder

+0

您是否尝试Deepak的答案?这应该适合你。 – Sajan

回答

1

一点这里要注意的是@usersActiveRecord的关系。关于ActiveRecord关系,没有这样的方法push

push方法由Array支持,所以你可以在生成的`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 removedActiveRecord 5结果转换成数组,然后推new_user。您可以尝试推前关系转换为数组:

@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

是的,推送方法已被弃用,但如果你能指出任何其他方法代替它,这将是一件好事 – Jaswinder

+0

@GstjiSaini查看更新的答案 –