Ruby on rails 打电话时";ActiveRecord::Base.create";,如何称呼;创建";?
在Rails中,我创建了新表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::
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创建结束类基包含持久性结束类Postcreate
是类Post
的类方法,而不是实例方法。你的解释是关于实例方法的。但是我找不到源代码。它们看起来不好看。很抱歉,我无法插入\n
。您应该从以下内容开始。因为这更多的是关于基本Ruby而不是Rails。同样的事情也适用于类方法,但从您的知识角度来看,我怀疑您是否理解类方法的示例,因为在模块中定义类方法是完全不同的。这就是类方法模块的由来。让我们来看一下。对不起。我认为Rails的工作原理如下<代码>模块ActiveRecord模块持久性模块ClassMethod def创建结束类基包含持久性结束类Postcreate
是类Post
的类方法,而不是实例方法。你的解释是关于实例方法的。但是我找不到源代码。它们看起来不好看。很抱歉,我无法插入\n
。您应该从以下内容开始。因为这更多的是关于基本Ruby而不是Rails。同样的事情也适用于类方法,但从您的知识角度来看,我怀疑您是否理解类方法的示例,因为在模块中定义类方法是完全不同的。这就是类方法模块的由来。让我们来看看。