Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 订单和项目的HMT或HABTM_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 订单和项目的HMT或HABTM

Ruby on rails 订单和项目的HMT或HABTM,ruby-on-rails,ruby,Ruby On Rails,Ruby,对rails来说是相当陌生的,并且在继续之前尝试了解要使用哪些关系 我有两种型号:订单和项目。这是一种多对多关系,但我不确定使用哪种关系 订单可能有交货时间、物品数量等 最后,如果使用HMT,您会将加入订单和项目的模型称为什么?这似乎是HABTM的一个经典案例,并且是完美的。选择取决于您是否需要连接模型本身的任何其他数据或逻辑。如果是这样,那么使用HMT,在这里您将创建第三个活动的_记录模型作为联接表。你可以给它取任何你想要的名字。但是HABTM似乎适合您,您只需要在迁移中设置带有默认名称(it

对rails来说是相当陌生的,并且在继续之前尝试了解要使用哪些关系

我有两种型号:
订单
项目
。这是一种多对多关系,但我不确定使用哪种关系

订单可能有交货时间、物品数量等


最后,如果使用HMT,您会将加入
订单
项目
的模型称为什么?

这似乎是HABTM的一个经典案例,并且是完美的。选择取决于您是否需要连接模型本身的任何其他数据或逻辑。如果是这样,那么使用HMT,在这里您将创建第三个活动的_记录模型作为联接表。你可以给它取任何你想要的名字。但是HABTM似乎适合您,您只需要在迁移中设置带有默认名称(
items\u orders
)的连接表,rails将为您处理所有其他事情

class Order < ActiveRecord::Base
  has_and_belongs_to_many :items
end

class Item < ActiveRecord::Base
  has_and_belongs_to_many :orders
end
类顺序
如果您需要了解有关特定订单上项目关系的任何其他信息,您需要HMT

如果您的商品在未来改变价格,您是否想知道它们在过去的订单中的售价是多少

在这种类型的需求中,我总是有许多订单的“行项目”记录,行项目实例属于该项目和订单,并记录该订单的定价和/或数量


HMT和HABTM?很少有时候,您只需要多对多,因此我几乎总是使用HMT,以获得向关联添加更多信息的额外功能。

您是否需要能够倒退:给定一个项目,它的显示顺序是什么?如果是这样的话,这就是HABTM的经典案例,这里有一个完美的例子:默认的联接表将命名为items\u orders(字母顺序),使用哪一个@Daiku在移动设备acc上表示抱歉-我不需要返回给定的项目。只需查看订单中有哪些项目。我应该使用HMT吗?如果我使用HMT,你会怎么称呼这个模型?@Emma这里是一个简单的Rails实现:你可以看看更高级的例子,如果你想看到比你所希望的更多的东西。