私はHerokuで実行中のアプリケーションを持っています。このアプリはメール、パスワード、その他のいくつかの列を持つUserモデルを持っています。私は最近、各ユーザーの一意のトークンであるランダムトークン列を含め、データベースにローカルに列を追加しました。ユーザーが作成されると、次のコードは、ユーザーモデルで実行されます。レコードがすでに存在する場合にデータベース列に情報を追加する
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エラーが生じました。どのように私はレーキでプライベートメソッドを呼び出すことができますか?ポピュレートされた新しいトークン列を使用して古いユーザーを設定するために、レイプロセス全体がどのように表示されますか?
ありがとう!しかし、私はどのように全体のユーザーモデルのレーキタスクでこれを管理するのだろうか? – Alex
変更前に作成したすべてのユーザーをループしてその上でメソッドを呼び出すことができますが、非常に悪い考えであるユーザーが多い場合は、あなたはバッチでそれをやりたいかもしれません。 – Russell