如何解决Rails:需要帮助定义地址表的关联
| 我觉得这有点儿弯曲,并希望有一些想法。我的设计像这样: 有建设者表,每个建设者可以有一个邮政地址 有一个客户表,每个客户可以有一个邮政地址和一个帐单地址 有一个地址表 我需要定义builders-addresss和clients-addresses之间的关联 我最初的数据库设计是这样的:Builders
--------------------
id
postal_address_id
...
Clients
--------------------
id
postal_address_id
billing_address_id
...
Addresses
-------------------
id
...
这对我来说似乎是合乎逻辑的,但是我很难在Rails关联中进行翻译。
我认为地址可以定义一个longate_to:可寻址的多态关联。但是我该如何为客户处理邮政和帐单地址。
任何帮助都感激不尽。
解决方法
在这种情况下,我将使用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
在rails文档中了解有关STI的更多信息
, 您可能在addressable
表中只有address_type
列。然后,您可以像这样定义关联的范围:
class Client
has_one :biling_address,:as => :addressable,:conditions => {:address_type => \"billing\"}
has_one :shipping_address,:conditions => {:address_type => \"shipping\"}
end
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。