我有一个模特组。
一个组可以有多个地址作为位置。它肯定有两种其他地址: 一个邮寄地址 一个用于帐单邮寄地址
所以地址也是一个模型,我如何将belongs_to归属于同一模型但是具有 多个ids?
即
组: mailing_address_id billing_address_id
各个位置由group_locations连接表很容易处理: ID GROUP_ID ADDRESS_ID
但是如何使用belongs_to作为mailing_address_id和biling_address_id ???通常是:
address_id(就像它在连接中一样)但我需要它们意味着。
这是我想要将地址分成另一个表的工件,试图保持数据库相对规范化我认为它被调用。
我还有一段时间构建另一种连接表,通过位置连接表连接组中的人...但这是我在这里发布的一个难题:
答案 0 :(得分:1)
class Group < ActiveRecord::Base
belongs_to: billing_address, class: 'Address', foreign_key: 'billing_address_id'
belongs_to: mailing_address, class: 'Address', foreign_key: 'mailing_address_id'
end
答案 1 :(得分:1)
你可以尝试:关系你的foreign_key。
在here
上查找“4.1.2.5:foreign_key”部分按照惯例,Rails假定用于保存外来的列 此模型上的键是带后缀_id的关联名称 添加。 :foreign_key选项允许您设置外部名称 直接关键
答案 2 :(得分:1)
地址只是一个地址所以应该得到自己的表。
某人可能位于某个地址并将其用于某个角色。
两个人可以住在同一个地址。既适合家庭,也适合工作。因此:
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)
);
对于销售订单,您可以参考开票方和地址的people_placements表。与销售订单行项目中的装运方和地址相同。