Ruby on rails 与ruby类同名的活动记录模型
为了把事情分开,我想要一个类顺序和一个模型顺序。以下是我的课程:Ruby on rails 与ruby类同名的活动记录模型,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,为了把事情分开,我想要一个类顺序和一个模型顺序。以下是我的课程: class Order < ApplicationRecord end 我怎样才能做到这一点?有把戏吗 我不想这样做: module Something class Order end end 我更喜欢为模型使用其他名称,而不是更改我的业务类(Order)的名称 注意 如果您知道Bob C.Martin的“干净架构”原则,这就是我尝试这样做的原因 编辑: 我找到了一种方法,但不确定最干净的方法是: cla
class Order < ApplicationRecord
end
我怎样才能做到这一点?有把戏吗
我不想这样做:
module Something
class Order
end
end
我更喜欢为模型使用其他名称,而不是更改我的业务类(Order)的名称
注意
如果您知道Bob C.Martin的“干净架构”原则,这就是我尝试这样做的原因
编辑:
我找到了一种方法,但不确定最干净的方法是:
class OrderInDb < ApplicationRecord
self.table_name = "orders"
end
class OrderInDb
如果不想更改基础表名,可以执行以下操作:
class CustomerOrder < ApplicationRecord
self.table_name = 'orders'
end
class CustomerOrder
您可能还想更改您拥有的任何关联。e、 g:
class Customer < ApplicationRecord
has_many :orders, class_name: 'CustomerOrder', inverse_of: :customer
end
class客户
一个作用域中不能有两个同名的不同类。当您在应用程序中编写Order
时,您希望引用这两个类中的哪一个?如果您确实想要相同的名称(ish),我将假定这是一个服务对象,您可以将其命名为AR类,例如class Order
那么您的“服务对象”将是Order::Order
(但它读起来确实有点滑稽)。问题是ActiveRecord固有的,它以方便的名义混合了模型和数据持久性。您可能需要考虑将模型和持久性分隔为两个不同的对象。
class Customer < ApplicationRecord
has_many :orders, class_name: 'CustomerOrder', inverse_of: :customer
end