当从轨道迁移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)
当从轨道迁移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)
一点这里要注意的是@users
是ActiveRecord
的关系。关于ActiveRecord
关系,没有这样的方法push
。
push
方法由Array
支持,所以你可以在生成的`Arraya
@users = User.includes(:account).order(:last_name)
@users.to_a.push(new_user)
还提到concat和push的作用是一样的,但concat不能正常工作。获取同样的错误。 – Jaswinder
ActiveRecord::Associations::AssociationCollection#push
已经deprecated and removed从ActiveRecord 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])
是的,推送方法已被弃用,但如果你能指出任何其他方法代替它,这将是一件好事 – Jaswinder
@GstjiSaini查看更新的答案 –
这是'未定义的方法推”为#'完整的错误?我相信**#**之后必须有一个类名。 – Sajan
这是完整的行:未定义的方法'推'为# –
Jaswinder
您是否尝试Deepak的答案?这应该适合你。 – Sajan