2008-12-01 11 views

Respuesta

8

:: Base es una clase en el módulo de ActiveRecord. Una de las cosas que hacen los módulos es proporcionar espacios de nombres en Ruby. En Ruby no heredas de un módulo, pero puedes mezclarlo usando la instrucción include.

Puedo sugerir que tome el libro Pickaxe o que lea Why's (Poignant) Guide to Ruby.

+0

Mike, gracias, Realmente necesito recoger el pico, juego de palabras ;-) – Valentin

+0

de nada. ¡buena suerte! –

6

en Ruby, :: accede a la clase estática o constantes de módulo. ActiveRecord::Base indica que la clase o módulo ActiveRecord tiene una clase interna estática llamada Base que está extendiendo.

Editar: como señala Mike a cabo, en este caso es un módulo ActiveRecord ...

+0

ActiveRecord se define como un módulo en rieles, http://github.com/rails/rails/tree/master/activerecord/lib/active_record/base.rb –

4

:: es un operador único que le permite acceder a una constante, módulo o clase definida dentro de otra clase o módulo. Se utiliza para proporcionar espacios de nombres para que el método y los nombres de clase no entren en conflicto con otras clases por diferentes autores.

Cuando vea ActiveRecord :: Base de rieles que significa que en los carriles ActiveRecord::Base es algo como esto

module ActiveRecord 
    class Base 
    end 
end 

Esto significa que una clase llamada Base está dentro de un módulo de ActiveRecord que se cita a continuación, como ActiveRecord::Base

Para una mejor comprensión de :: operador, simplemente siga este ejemplo desde tutorialspoint.com:

MR_COUNT = 0  # constant defined on main Object class 
module Foo 
    MR_COUNT = 0 
    ::MR_COUNT = 1 # set global count to 1 
    MR_COUNT = 2  # set local count to 2 
end 
puts MR_COUNT  # this is the global constant 
puts Foo::MR_COUNT # this is the local "Foo" constant 
Cuestiones relacionadas