【问题标题】:Active Record foreign_keys?活动记录外键?
【发布时间】:2013-08-25 22:49:28
【问题描述】:

例如,我想要一个客户同时拥有技术联系人和管理员联系人的模型。 我想在客户记录中为 tech_contact 和 admin_contact 命名字段。

键应位于 Customer 表中,因为多个客户同一个技术联系人...

我似乎无法正常工作。

有什么想法吗?

谢谢,

J

【问题讨论】:

  • “命名字段”是什么意思?您能否解释一下要为技术和管理员联系人保留哪些数据?技术联系人和管理员联系人的数据是否相同?

标签: ruby-on-rails ruby-on-rails-3 activerecord


【解决方案1】:

客户模型:

class Customer < ActiveRecord::Base
  has_one :tech_contact
  has_one :admin_contact
end

您可以创建一个名为 Contact 的基本模型并使用单表继承 (STI)。

class Contact < ActiveRecord::Base
end

技术联系人:

class TechContact < Contact
  belongs_to :customer, :foreign_key => :customer_id
end

管理员联系方式

class AdminContact < Contact
  belongs_to :customer, :foreign_key => :customer_id
end

表架构: 客户:id,first_name,:last_name,... 联系人:id, :type, customer_id, ...

但这只是一个机会。

【讨论】:

  • 这里的外键不应该是“tech_contact_id”和“admin_contact_id”吗?
  • 这对我不起作用。 'contact_id' 字段属于哪个表?
  • 我更新了我的答案。 @Ryan Bigg ..只有一个 foreign_key 字段..否则你可以简单地从两个模型中添加两​​个正常的关联。但我的示例在 STI 解决方案中显示了这种情况..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多