Ruby 如何使用属于同一模型但用于不同列(用于含义)

Ruby 如何使用属于同一模型但用于不同列(用于含义),ruby,database,activerecord,rails-activerecord,Ruby,Database,Activerecord,Rails Activerecord,我有一个模型组 一个组可以有许多地址作为位置。它必须有两种其他地址: 一个是邮寄地址 一个是账单地址 所以地址也是一个模型,我怎么能有一个属于同一个模型但有 多个ID i、 e 组: 邮寄地址 账单\地址\ id 不同的位置由一个group_locations联接表负责,非常简单: 身份证件 组id 地址 但是我如何使用“所属对象”作为邮寄地址id和必灵地址id???通常是: address_id(就像在join中一样),但我需要它们有意义 这是我想要将地址分离到另一个表中以保持数据库相对规范化

我有一个模型组

一个组可以有许多地址作为位置。它必须有两种其他地址: 一个是邮寄地址 一个是账单地址

所以地址也是一个模型,我怎么能有一个属于同一个模型但有 多个ID

i、 e

组: 邮寄地址 账单\地址\ id

不同的位置由一个group_locations联接表负责,非常简单: 身份证件 组id 地址

但是我如何使用“所属对象”作为邮寄地址id和必灵地址id???通常是:

address_id(就像在join中一样),但我需要它们有意义

这是我想要将地址分离到另一个表中以保持数据库相对规范化的产物,我想这就是所谓的

我还花了很长时间构建了另一种连接表,通过位置连接表将组中的人连接起来……但这是我在这里发布的一个不同主题:

类组
类组
类组
类组
您可以在您的关系上尝试:外键

查看“4.1.2.5:外键”部分

按照惯例,Rails假定用于保存外部数据的列 此模型上的键是带有后缀_id的关联的名称 补充。:foreign_键选项可用于设置外来项的名称 直接键


你可以在你的关系上试试:外键

查看“4.1.2.5:外键”部分

按照惯例,Rails假定用于保存外部数据的列 此模型上的键是带有后缀_id的关联的名称 补充。:foreign_键选项可用于设置外来项的名称 直接键


你可以在你的关系上试试:外键

查看“4.1.2.5:外键”部分

按照惯例,Rails假定用于保存外部数据的列 此模型上的键是带有后缀_id的关联的名称 补充。:foreign_键选项可用于设置外来项的名称 直接键


你可以在你的关系上试试:外键

查看“4.1.2.5:外键”部分

按照惯例,Rails假定用于保存外部数据的列 此模型上的键是带有后缀_id的关联的名称 补充。:foreign_键选项可用于设置外来项的名称 直接键


地址只是一个地址,所以应该有自己的表

一个人可能位于某个地址并在某个角色中使用该地址

两个人可以住在同一个地址。一个在家,一个在工作。因此:

create table addresses (
  address_id int primary key,
  ...address info...
);

create table people (
  person_id int primary key,
  ...person info...
);

create table people_placements (
  person_id int references people(person_id),
  address_id int references addresses(address_id),
  address_role_id smallint references address_roles(address_role_id), /* definition elided */

  primary key (person_id, address_id, addres_role_id)
);

对于销售订单,您将参考开票方和地址的人员安置表。销售订单行项目上的发货方和地址也是如此。

地址只是一个地址,所以应该有自己的表

一个人可能位于某个地址并在某个角色中使用该地址

两个人可以住在同一个地址。一个在家,一个在工作。因此:

create table addresses (
  address_id int primary key,
  ...address info...
);

create table people (
  person_id int primary key,
  ...person info...
);

create table people_placements (
  person_id int references people(person_id),
  address_id int references addresses(address_id),
  address_role_id smallint references address_roles(address_role_id), /* definition elided */

  primary key (person_id, address_id, addres_role_id)
);

对于销售订单,您将参考开票方和地址的人员安置表。销售订单行项目上的发货方和地址也是如此。

地址只是一个地址,所以应该有自己的表

一个人可能位于某个地址并在某个角色中使用该地址

两个人可以住在同一个地址。一个在家,一个在工作。因此:

create table addresses (
  address_id int primary key,
  ...address info...
);

create table people (
  person_id int primary key,
  ...person info...
);

create table people_placements (
  person_id int references people(person_id),
  address_id int references addresses(address_id),
  address_role_id smallint references address_roles(address_role_id), /* definition elided */

  primary key (person_id, address_id, addres_role_id)
);

对于销售订单,您将参考开票方和地址的人员安置表。销售订单行项目上的发货方和地址也是如此。

地址只是一个地址,所以应该有自己的表

一个人可能位于某个地址并在某个角色中使用该地址

两个人可以住在同一个地址。一个在家,一个在工作。因此:

create table addresses (
  address_id int primary key,
  ...address info...
);

create table people (
  person_id int primary key,
  ...person info...
);

create table people_placements (
  person_id int references people(person_id),
  address_id int references addresses(address_id),
  address_role_id smallint references address_roles(address_role_id), /* definition elided */

  primary key (person_id, address_id, addres_role_id)
);

对于销售订单,您将参考开票方和地址的人员安置表。销售订单行项目上的发货方和地址也是如此。

谢谢您的回答!谢谢你的回答!谢谢你的回答!谢谢你的回答!