从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)
答案 0 :(得分:1)
这里要注意的一点是@users
是ActiveRecord
关系。 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 5
已deprecated 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])