Rails版本迁移问题(Rails 4.2到5.0)

时间:2017-02-14 10:20:00

标签: ruby-on-rails rails-activerecord ruby-on-rails-5

从rails 4.2.6迁移到5.0.1时,我遇到了一些错误:

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

在做的时候:

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

2 个答案:

答案 0 :(得分:1)

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

push支持

Array方法,因此您可以将结果转换为数组,然后在生成的`Arraya

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

答案 1 :(得分:0)

来自ActiveRecord::Associations::AssociationCollection#push的{​​p> ActiveRecord 5deprecated and removed。在推送之前,您可能会尝试将关系转换为数组:

@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])