我希望客户参考两种地址模型,一种用于账单地址,另一种用于发货地址.据我所知,外键是由它的名称决定的,即_id.显然,我不能命名两行地址_id(以引用地址表).我该怎么做?

create_table :customers do |t|
  t.integer :address_id
  t.integer :address_id_1 # how do i make this reference addresses table?
  # other attributes not shown
end

推荐答案

这听起来好像和我有很多关系——把客户id放在地址表中.

Customer
  has_many :addresses

Address
  belongs_to :customer

还可以在assoc声明中提供外键和类

Customer
   has_one :address
   has_one :other_address, foreign_key => "address_id_2", class_name => "Address"

Ruby-on-rails相关问答推荐

有没有一种方法可以点击一个按钮来冒泡到父元素?

使用Rails和RSpec,有没有办法查看操作真正将您带到哪个页面?

如何通过graphqlMutations 从rails销毁当前用户会话

select2 未应用于所有下拉列表;它只适用于数据的最后一条记录

升级到 Rails 6.1.6.1 导致 Psych::DisallowedClass: 试图加载未指定的类:符号

来自控制台的 ActionCable.server.broadcast

Ruby 地理定位Ruby /插件

Rails Scope 返回 all 而不是 nil

在 Rails 3.2 中更新多行

查找日期时间与今天匹配的记录 - Ruby on Rails

Rails 将 form_for 对象传递给部分

Gem 更新:在从 ASCII-8BIT 到 UTF-8 到 US-ASCII 的转换中,无法将 "\xE7" 转换为 UTF-8

运行多个 Rails Server 实例

从控制器中删除 Cookie

简单表单关联自定义标签名称

Rails - 获取没有 GET 参数的当前 url

Ruby如何写入Tempfile

在 Devise on Rails beta 3 中创建管理员用户

何时在 Ruby on Rails 中使用 lambda?

如何从 ApplicationHelper 调用 ApplicationController 方法