リファクタリングでは、generate_token
メソッドを他のモデルから呼び出せるようにユーザモデルから移動する必要があります。列は、必要に応じて、ユーザモデルは、多くの異なるトークンを生成することを可能に渡されるモデルをメソッドでレールに渡す
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
:
これは、メソッドコードです。 auth_token
とpw_reset_token
:
def some_other_method
generate_token(:token_column_name)
...
end
私のユーザモデルが現在の方法には、2つの異なるトークン列に渡しますようにメソッドが呼び出されます。
私の最初の考えは、/lib/generate_token.rb
に入れて、include generate_token
でモデルから呼び出すことです。インクルードの列のパラメータを渡す必要はありません。メソッドを呼び出すだけであり、呼び出していないからです。
私の挑戦はend while User.exists?(column => self[column])
です。これにより、メソッドがすでに存在する場合、メソッドが新しいトークンを生成するのを防ぎます。ただし、これはユーザーモデルを前提としています。代わりに、私は、メソッドを呼び出し、そしてメソッドに変数としてそれをで渡す、のようなものですモデルを取るために、それをリファクタリングする必要があります。
include generate_token(model_name)
をコードは今
end while [Model].exists?(column => self[column])
を読むことができるように、
これは可能ですか?どうすればいい?
のようなものを行う、クラスを取得するために
self.class
を呼び出すことができる、と述べた...ありがとう。 – Matteo
これは私が探していたようです。私はそれが動作するようにすぐに私のコードを投稿します。 (または、私は再びスタックに投稿します...:p) – Matteo
すごくうれしいです。 – GoGoCarl