私はモジュールOtpGenerator
を持っている宝石を建てています。このモジュールの中には、generate_otp
、verify_otp
などのメソッドがあります。これは、私と非常に簡単な宝石の生成と検証と保存と送信だけのためのものです。今、この宝石を使用する人は、このモデルをモデルに含める必要があります。例えば、 user
モデルがあります。今私がしたいことは最初に私がruby-on-railsモデルでgem-modulesを混在させる方法
user = User.new(params[:user])
インスタンスが作成されますされ、今私は、これはActiveRecordの場合にOTP関連のものを割り当てます、操作user.generate_otp
を行う必要があります。
そのあとuser.save
です。これも問題ありません。
しかし、私はまた、otpを生成するのと同じようにすべてのタスクを実行し、保存して送信する関数generate_otp!
が必要です。私の問題は、私はこの機能を達成する方法が得られていないということです。
注:私は非常に新しいです。ミックスインと本当に混乱してしまいます。ここ
がotp.rb
ファイル
require 'securerandom'
module OtpGenerator
def generate_otp
#do something here
end
def verify_otp(otp)
#do something here
end
def regenerate_otp
#do something here
end
def matches?(generated, otp)
#do something here
end
def expired?(otp_expiry_time)
#do something here
end
end
このコードのための私のコードはまだ開発中ですが、私はちょうどすなわち、すべての3つの操作を行いますされ、generate_otp!
機能を実装する方法をことを知ってほしい、 (1)これはあなたの中にミックスインである場合は、OTP(user.generate_otp)が (2)OTP(user.save) (3)OTPを送信します(問題はないthatsの私は、送信機能を作成しました。)
あなたはgenerate_otp!あなたがそれを記述したのと同じくらい簡単でなければなりません!実行される順序で3つのメソッドを追加します。私が実際に見ることのできる1つの問題は、生成されたOTPがどこにも格納されていないように見えることです。なぜなら、検証には – oreoluwa
'generate_otp! 'メソッドの参照が必要であると確信しているからです。私の宝石のモジュールはモデルに含まれます。 'user.generate_otp!'が呼び出されたとき、私は自分のモジュールに 'user.save'をどのように実装するのか分かりません。 – Sinscary