:: ActiveRecord :: Base中的基本部分

时间:2008-12-01 12:22:56

标签: ruby-on-rails ruby

:: Base部分在Person中意味着什么< ActiveRecord :: Base类声明? 我是ruby的新手,也是我迄今为止收集的内容,Person<应该使用ActiveRecord。 谢谢。

3 个答案:

答案 0 :(得分:9)

:: Base是模块ActiveRecord中的一个类。模块所做的一件事就是在Ruby中提供命名空间。在Ruby中,您不从模块继承,但可以使用include语句将其混合。

我建议您阅读Pickaxe本书或阅读Why's (Poignant) Guide to Ruby

答案 1 :(得分:6)

在Ruby中,::访问静态类或模块常量。 ActiveRecord::Base表示ActiveRecord类或模块有一个名为Base的静态内部类,您正在扩展。

迈克指出,

编辑,在这种情况下,ActiveRecord是一个模块......

答案 2 :(得分:6)

::是一元运算符,允许您访问在另一个类或模块中定义的常量,模块或类。它用于提供名称空间,以便方法和类名称不会与不同作者的其他类冲突。

当你在Rails中看到ActiveRecord :: Base时,意味着在Rails中ActiveRecord::Base是这样的

module ActiveRecord
  class Base
  end
end

这意味着名为Base位于模块 ActiveRecord内,然后引用为ActiveRecord::Base

为了更好地理解:: operator,只需从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