私は私のメソッドを特定することができない理由を理解しようとしています。たぶん私は物事をはっきり見ていないと誰かがキャッチできる小さな間違いをした?ここで私のコードは、私はこのエラーを取得するボタンをクリックします。モデルでメソッドが検出されませんでした "未定義のメソッド` process_uri '"
ユーザモデル:if auth.info.image.present?
が渡されたときprocess_uri
が呼び出されましたが、私の方法は特定されません。
def self.from_omniauth(auth)
anonymous_username = "NewUser#{User.last.id + 1}"
generated_password = Devise.friendly_token[0,20]
user = User.where(:email => auth.info.email, :username => anonymous_username).first
if user
return user
else
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.confirmed_at = Time.now
user.fullname = auth.info.name
user.provider = auth.provider
user.uid = auth.uid
user.username = anonymous_username
user.email = auth.info.email
user.password = generated_password
end
if auth.info.image.present?
avatar_url = process_uri(auth.info.image)
user.update_attribute(:avatar, URI.parse(avatar_url))
end
end
end
private
def process_uri(uri)
require 'open-uri'
require 'open_uri_redirections'
open(uri, :allow_redirections => :safe) do |r|
r.base_uri.to_s
end
end
あなたは私はこれはまだ気づいていないプライベート取る場合でも... def process_uri(uri)
の下にプライベートメソッドを持って見ることができるように...ありがとう!
大丈夫です!私のメソッドとして 'def self.process_uri(uri)'を代わりに追加するべきですか? –
うん、それは動作するはずです。 –