What does :: do?

ruby-on-rails

Solution

`::` is a scope resolution operator, it effectively means "in the namespace", so `ActiveRecord::Base` means "`Base`, in the namespace of `ActiveRecord`"

A constant being resolved outside of any namespace means exactly what it sounds like - a constant not in any namespace at all.

It's used in places where code may be ambiguous without it:

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

Problem

I have some inherited code that I am modifying. However, I am seeing something strange(to me). I see some code like this: ``` ::User.find_by_email(params[:user][:email]).update_attributes(:mag => 1) ``` I have never seen something like this(I am new to Ruby on Rails). What does this do and why doesn't my `User.find_by_email(params[:user][:email]).update_attributes(:mag => 1)` work? The error says something about the `User` constant. I am using Rails 2.3.5 if that helps.

Original source

Related problems