在模型“undefined method`process_uri'”中未检测到的方法

时间:2017-01-09 02:15:04

标签: ruby-on-rails ruby image model omniauth

我试图找出为什么我无法确定我的方法。也许我没有清楚地看到事情并犯了一个有人能抓到的错误?这是我的代码,当我点击按钮时,我收到此错误。

用户模型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)

正如你所看到的,我在*= require jquery-ui.min.css 下方有一个私人方法..即使我拿出私人方法,这仍然没有被注意到......谢谢!!

1 个答案:

答案 0 :(得分:1)

这里的问题是私有方法process_uri是一个实例方法,而from_omniauth是一个类方法。在类方法的上下文中,调用该方法的self对象是类,而不是实例,因此您得到未定义的方法错误,因为没有类方法process_uri。您可以将process_uri定义为类方法,也可以将其公开并在对象本身上调用它(例如user.process_uri)。