您将如何隐藏特定的ORM实现:class Project <ActiveRecord :: Base

par*_*lia 0 ruby inheritance abstraction ruby-on-rails

假设我有一个名为Project的模型类,但不是这样的:

class Project < ActiveRecord::Base
Run Code Online (Sandbox Code Playgroud)

我想写这个:

class Project < ORM
Run Code Online (Sandbox Code Playgroud)

这样我的模型类中就不存在特定的ORM实现.

我如何编写我的ORM类,以便上面的Project类能够作为子类,ActiveRecord::Base但没有专门的子类化?

我会简单地说:

class ORM < ActiveRecord::Base
Run Code Online (Sandbox Code Playgroud)

然后Project将是一个子类,ActiveRecord::Base就像我写的一样:

class Project < ActiveRecord::Base
Run Code Online (Sandbox Code Playgroud)

Yeh*_*atz 5

可能更简单的方法是分配ActiveRecord::Base:

ORM = ActiveRecord::Base

class Project < ORM
end
Run Code Online (Sandbox Code Playgroud)

然后,如果您想稍后交换到其他实现,则可以将分配更改为ORM.