私はレールアプリでSorceryライブラリを使用しています。そのモジュールの1つは外部認証用です。そのモジュールにメソッドを追加する必要があります。Ruby:別のファイルからモジュールにメソッドを追加してオートロードする
既存のコードはhereです。メソッドをthis patchから追加します。
私は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
を私のコントローラ(他の魔法のメソッドを呼び出してうまく動作する)に入れます。
ルビーの私の基本的な理解は、いつでもオブジェクトやモジュールにメソッドを追加できるということです。モジュールのネストをファイルに正しくコピーしたと思います。モジュールファイルの名前を変更する必要はありますか?私はこの種のことをどうやって行うのか本当に分からないので、どんな助けも大歓迎です。ありがとう!