【发布时间】:2011-12-02 23:19:26
【问题描述】:
我有一个在 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。如何为在添加此新列之前创建的用户添加此令牌。我听说过很多有关 rake 的信息,但我们将不胜感激。
顺便说一句,我尝试通过执行以下操作从 Rails 控制台本地为测试用户添加令牌:
User.find_by_email('xyz').set_referer_url
但是,这导致了 NoMethod 错误:私有方法。如何在 rake 中调用私有方法?为了使用填充的新令牌列设置旧用户,整个 rake 过程会是什么样子?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 rake