我有一张名为customers的表。这些表有两个地址。一个工作地址和一个房子的直接
这两个地址属于一个名为地址的表 我不知道如何关联这两个表
迁移
class CreateCustomers < ActiveRecord::Migration
def change
create_table :customers do |t|
t.string :name
t.integer :address_id #Address of work
t.integer :address_id_1 #Address of home
t.timestamps
end
end
end
class CreateAdresses < ActiveRecord::Migration
def change
create_table :adresses do |t|
t.string :street
t.timestamps
end
end
end
答案 0 :(得分:0)
我不相信这是一种好方法或数据库设计。如果您想以这种方式继续而不是脱离轨道惯例,只需创建两列address_id
和address_two_id
并在 customer.rb
中belongs_to :address, class_name: "Address"
belongs_to :address_two, class_name: "Address"
默认情况下,rails获取外键的名称并将其存储在名为“name”+“_ id”的列中
更好的方法是,在您的customer_id
模型中有两个列Address
并在您的客户类中创建关系
<强> customer.rb 强>
has_many :addresses
您还可以通过将此验证添加到
来验证客户的地址不超过两个<强> address.rb 强>
validate :validate_two_addresses
def validate_two_addresses
address_count = Address.where(customer_id: self.customer_id).count
errors.add(:base, "You cannot have more than 2 addresses.") unless address_count < 3
end