加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 可以在Ruby on Rails中描述这种关系吗?

发布时间:2020-12-17 03:25:59 所属栏目:百科 来源:网络整理
导读:这是一个可以在 Ruby on Rails的ActiveRecord模型关系中描述的关系吗? Customer Address =================== ========= Billing_Address_Id ------} }---|- AddressId Shipping_Address_Id ------} 这样我就可以拥有如下所示的数据: 地址: Id | Addr | C
这是一个可以在 Ruby on Rails的ActiveRecord模型关系中描述的关系吗?

Customer                          Address
   ===================               =========
   Billing_Address_Id  >------}
                              }---|- AddressId
   Shipping_Address_Id >------}

这样我就可以拥有如下所示的数据:

地址:

Id | Addr           | City     | State | Zip   |
   ================================================
   1  | 123 Main       | New York | NY    | 99999 |
   2  | 200 2nd Street | New York | NY    | 99999 |
   3  | 300 3rd Street | Albany   | NY    | 99998 |
   4  | PO Box 4       | Albany   | NY    | 99998 |

顾客:

Id | Name | Billing_Address_Id | Shipping_Address_Id  |
   =======================================================
   1  | Bob  | 1                  | 1                    |
   2  | Al   | 2                  | 1                    |
   3  | Joe  | 3                  | 4                    |

我想在他们自己的表中存储地址,因为数据可能在客户之间共享(特别是送货地址).但对于任何给定的客户,甚至只有两个地址.

除非没有别的办法,否则我想避免多对多的关系.

解决方法

给定这样的表定义:

create_table :addresses do |t|
  t.string :street
  t.string :city
  t.string :state
  t.string :zip
  t.timestamps
end

create_table :customers do |t|
  t.string     :name
  t.references :shipping_address
  t.references :billing_address
  t.timestamps
end

您可以将结算和送货地址与您的客户相关联,如下所示:

class Customer < ActiveRecord::Base
  belongs_to :shipping_address,:class_name => "Address"
  belongs_to :billing_address,:class_name => "Address"
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读