::做什么?

Tee*_*eej 8 ruby-on-rails

我有一些我正在修改的继承代码.但是,我看到一些奇怪的东西(对我来说).

我看到一些像这样的代码:

::User.find_by_email(params[:user][:email]).update_attributes(:mag => 1)
Run Code Online (Sandbox Code Playgroud)

我从未见过这样的东西(我是Ruby on Rails的新手).这是做什么的,为什么我的User.find_by_email(params[:user][:email]).update_attributes(:mag => 1)工作没有?错误说明了User常量.

如果有帮助,我正在使用Rails 2.3.5.

Gar*_*eth 21

::是一个范围解析运算符,它实际上意味着"在命名空间中",所以ActiveRecord::Base意味着" Base,在命名空间中ActiveRecord"

在任何名称空间之外解析的常量意味着它听起来完全是什么 - 根本不在任何名称空间中的常量.

它用于代码可能不明确的地方:

module Document
  class Table # Represents a data table

    def setup
      Table # Refers to the Document::Table class
      ::Table # Refers to the furniture class
    end

  end
end

class Table # Represents furniture
end
Run Code Online (Sandbox Code Playgroud)


Len*_*ann 5

确保将用户模型加载到全局名称空间中。

假设您在当前模块(Foo :: User)中有一个全局User模型和另一个User模型。通过调用:: User,您可以确保获得全局变量。