我知道ruby中没有抽象类的概念.但是,如果它需要实施,那该怎么办呢?我试过像......
class A
def self.new
raise 'Doh! You are trying to write Java in Ruby!'
end
end
class B < A
...
...
end
Run Code Online (Sandbox Code Playgroud)
但是当我尝试实例化B时,它会在内部调用A.new哪个会引发异常.
此外,模块无法实例化,但也无法继承.使新方法私有也行不通.有什么指针吗?
我正在尝试实例化一个抽象AR类的对象用于测试目的.模型的定义如下:
class Basic < ActiveRecord::Base
self.abstract_class = true
def stuff
raise NotImplementedError
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试时Basic.new,我得到:
"Mysql2::Error: Table 'project_development.basics' doesn't exist"
Run Code Online (Sandbox Code Playgroud)
这是正常的行为吗?即使没有(显然不可能)持久性,抽象AR类也不打算实例化?
使用1.9.2-p136和Rails 3.0.4/Mysql2 0.2.6
编辑:
事实证明,错误是由列定义引起的,在抽象模型的情况下无法从数据库中获取.
class Basic < ActiveRecord::Base
self.abstract_class = true
@columns = []
end
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.