【问题标题】:What is Shadowing outer local variable in rubocop and how do I fix this?什么是 rubocop 中的阴影外部局部变量,我该如何解决?
【发布时间】:2015-11-16 14:25:56
【问题描述】:

我在 Rails 上运行 rubocop,它给了我下面的信息。

W: Shadowing outer local variable - user.
  where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
                                                                    ^^^^

这是代码。

def self.from_omniauth(auth)
user = User.where(email: auth.info.email).first

if user
  return user
else
  where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
    user.fullname = auth.info.name
    user.provider = auth.provider
    user.uid = auth.uid
    user.email = auth.info.email
    user.image = auth.info.image
    user.password = Devise.friendly_token[0, 20]
  end
end

结束

【问题讨论】:

    标签: ruby-on-rails rubocop


    【解决方案1】:

    这意味着作为块参数提供的user 将覆盖此处定义的user 变量user = User.where(email: auth.info.email).first

    要克服它,您需要更改其中一个变量的名称。 要么是这样的:

    result = User.where...
    return result if result    
    

    或者:

    where(provider: auth.provider, uid: auth.uid).first_or_create do |u|
      u.fullname = auth.info.name
      ...
    end
    

    更多信息:https://github.com/bbatsov/ruby-style-guide#no-shadowing

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-26
      • 1970-01-01
      • 2019-12-12
      • 2012-09-03
      • 2021-05-21
      • 1970-01-01
      • 2021-11-28
      相关资源
      最近更新 更多