Ruby on rails 打电话时";ActiveRecord::Base.create";,如何称呼;创建";?

Ruby on rails 打电话时";ActiveRecord::Base.create";,如何称呼;创建";?,ruby-on-rails,Ruby On Rails,在Rails中,我创建了新表 class Post < ActiveRecord::Base end 类Base在同一目录中的Base.rb中定义 假设查看文件时,模块持久性和类Base在ActiveRecord中处于同一级别 那么如何才能Post调用create class Base # [...] include Core include Persistence include ReadonlyAttributes ActiveRecord::

在Rails中,我创建了新表

class Post < ActiveRecord::Base
end
Base
在同一目录中的
Base.rb
中定义

假设查看文件时,模块
持久性
和类
Base
ActiveRecord
中处于同一级别


那么如何才能
Post
调用
create

  class Base
    # [...]

    include Core
    include Persistence
    include ReadonlyAttributes

ActiveRecord::Base
包括
ActiveRecord::Persistence
,您可以在源代码中看到:

  class Base
    # [...]

    include Core
    include Persistence
    include ReadonlyAttributes

您需要区分经典的层次继承和并行继承

在Ruby中,类只能从单个类继承,但它们可以包含许多模块。这在其他语言中通常被称为混合或特征

module A
  def hello(name = "World")
    "Hello #{name}"
  end
end

module B
  def goodbye(name = "World"))
    "Goodbye #{name}"
  end
end

class Base
  include A
  include B
end

class Foo < Base
end

foo = Foo.new
puts foo.hello # => Hello World
puts foo.goodbye # => Goodbye World

这不会影响继承。例如,在本例中,
Foo::Bar
Foo::Baz::Bar
之间没有实际连接。在类或模块中定义的文件与继承树的工作方式之间也没有直接关系。Ruby会很高兴地让您将所有内容都放到一个文件中

您需要区分经典的层次继承和并行继承

在Ruby中,类只能从单个类继承,但它们可以包含许多模块。这在其他语言中通常被称为混合或特征

module A
  def hello(name = "World")
    "Hello #{name}"
  end
end

module B
  def goodbye(name = "World"))
    "Goodbye #{name}"
  end
end

class Base
  include A
  include B
end

class Foo < Base
end

foo = Foo.new
puts foo.hello # => Hello World
puts foo.goodbye # => Goodbye World

这不会影响继承。例如,在本例中,
Foo::Bar
Foo::Baz::Bar
之间没有实际连接。在类或模块中定义的文件与继承树的工作方式之间也没有直接关系。Ruby会很高兴地让您将所有内容都放到一个文件中

对不起。我认为Rails的工作原理如下<代码>模块ActiveRecord模块持久性模块ClassMethod def创建结束类基包含持久性结束类Post这意味着ClassMethod中的方法
create
是类
Post
的类方法,而不是实例方法。你的解释是关于实例方法的。但是我找不到源代码。它们看起来不好看。很抱歉,我无法插入
\n
。您应该从以下内容开始。因为这更多的是关于基本Ruby而不是Rails。同样的事情也适用于类方法,但从您的知识角度来看,我怀疑您是否理解类方法的示例,因为在模块中定义类方法是完全不同的。这就是类方法模块的由来。让我们来看一下。对不起。我认为Rails的工作原理如下<代码>模块ActiveRecord模块持久性模块ClassMethod def创建结束类基包含持久性结束类Post这意味着ClassMethod中的方法
create
是类
Post
的类方法,而不是实例方法。你的解释是关于实例方法的。但是我找不到源代码。它们看起来不好看。很抱歉,我无法插入
\n
。您应该从以下内容开始。因为这更多的是关于基本Ruby而不是Rails。同样的事情也适用于类方法,但从您的知识角度来看,我怀疑您是否理解类方法的示例,因为在模块中定义类方法是完全不同的。这就是类方法模块的由来。让我们来看看。