Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 与ruby类同名的活动记录模型_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

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