Rails アプリで Sorcery ライブラリを使用しています。そのモジュールの 1 つは外部認証用であり、そのモジュールにメソッドを追加する必要があります。
既存のコードはこちらです。このパッチadd_provider_to_user
からメソッドを追加したいと思います。
そのため、ディレクトリにファイルを追加し、lib/modules
レールに自動ロードするように指示しました。ファイルが呼び出されsorcery_extension.rb
、次のようになります。
module Sorcery
module Controller
module Submodules
module External
module InstanceMethods
protected
# If user is logged, he can add all available providers into his account
def add_provider_to_user(provider)
provider_name = provider.to_sym
provider = Config.send(provider_name)
user_hash = provider.get_user_hash
config = user_class.sorcery_config
user = current_user.send(config.authentications_class.to_s.downcase.pluralize).build(config.provider_uid_attribute_name => user_hash[:uid], config.provider_attribute_name => provider)
user.save(:validate => false)
return user
end
end
end
end
end
end
これはうまくいきませんでした。コントローラーにundefined method error
入ります (他のソーサリー メソッドの呼び出しは正常に機能します)。
したがって、Ruby に関する私の基本的な理解は、いつでもオブジェクトまたはモジュールにメソッドを追加できるということです...モジュールのネストをファイルに正しくコピーしたと思います。モジュールファイルに別の名前を付ける必要がありますか? この種のことを行う方法がよくわからないので、どんな助けでも大歓迎です。ありがとう!