Ruby on rails Rails:需要帮助定义地址表的关联吗

Ruby on rails Rails:需要帮助定义地址表的关联吗,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我觉得这有点令人费解,我想了解一些想法。我的设计是这样的: 有一个builders表,每个builder都可以有一个邮政地址 有一个客户表,每个客户都可以有一个邮政地址和一个帐单地址 有一个地址表 我需要定义构建器地址和客户端地址之间的关联 我最初的数据库设计如下: Builders -------------------- id postal_address_id ... Clients -------------------- id postal_address_id billing_

我觉得这有点令人费解,我想了解一些想法。我的设计是这样的:

  • 有一个builders表,每个builder都可以有一个邮政地址
  • 有一个客户表,每个客户都可以有一个邮政地址和一个帐单地址
  • 有一个地址表
我需要定义构建器地址和客户端地址之间的关联

我最初的数据库设计如下:

Builders
--------------------
id
postal_address_id
...

Clients
--------------------
id
postal_address_id
billing_address_id
...

Addresses
-------------------
id
...
这对我来说似乎是合乎逻辑的,但我在rails关联中翻译这一点时遇到了困难

我认为地址可以定义一个属于:可寻址的多态关联。但我如何处理客户的邮政和账单地址


任何帮助都将不胜感激。

您可以在
可寻址
表中设置一个
地址类型
列。然后,您可以这样确定关联的范围:

class Client
  has_one :biling_address, :as => :addressable, :conditions => {:address_type => "billing"}
  has_one :shipping_address, :as => :addressable, :conditions => {:address_type => "shipping"}
end

在这种情况下,我会使用STI(单表继承),我认为这是一个完美的例子

首先,您必须在地址模型中添加一个字段“type”。
然后您可以这样定义您的类:

class Client
  has_one :billing_address, :as => :addressable
  has_one :shipping_address, :as => :addressable
end

class Address < ActiveRecord:Base
  belongs_to :addressable, :polymorphic => true
end

class BillingAddress < Address
end

class Shipping Address < Address
end
类客户端
有一个:账单地址,:as=>:可寻址
有一个:配送地址,:as=>:可寻址
结束
类地址true
结束
类BillingAddress<地址
结束
类别装运地址<地址
结束
了解更多有关STI的信息