将信息添加到数据库列记录已经存在后

我在Heroku上运行的应用程序。 该应用程序与电子邮件,密码,其他一些列的用户模型。 我最近添加更多的列到数据库在本地,包括随机标记列,它是对每个用户的唯一令牌。 当创建一个用户,下面的代码运行在用户模式:

before_create :set_referer_url ... private def set_referer_url begin self.referer_url = rand(36**8).to_s(36) end while User.exists?(:referer_url => self.referer_url) end

对于创建任何新的用户,他们将这种独特的标记。 不过,老用户不会。 我想推动这个迁移(使用新的数据库列)来的Heroku。 如何添加此令牌加入这个新列之前创建的用户。 我听说了很多关于耙,但任何帮助将不胜感激。

顺便说一句,我试着从铁轨控制台通过执行以下操作本地添加令牌测试用户:

User.find_by_email('xyz').set_referer_url

然而,这导致了NoMethod错误:私有方法。 我如何可以调用耙私有方法? 将整个耙程序看起来像,以建立老用户与新的填充柱象征什么?

--------------解决方案-------------

若要调用从对象,利用外部的私人方式send

User.find_by_email('xyz').send(:set_referer_url)

这是一般不好的做法,这样做是理所当然的,因为私人的方法是私人的一个原因。 但对于现有数据的一次性回填作为迁移的一部分,我认为这是确定。

分类:Ruby on Rails的 时间:2015-03-15 人气:2
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.630 (s). 10 q(s)