【问题标题】:What kind of Ruby on Rails model association for a "simple" lookup?什么样的 Ruby on Rails 模型关联用于“简单”查找?
【发布时间】:2012-03-03 14:25:24
【问题描述】:

我尝试在 Ruby on Rails 应用程序中配置以下场景(警告:我是这里的初学者)...

我有 SupportType 模型,它定义了不同级别的客户支持选项(白银、黄金等),并详细说明了该支持类型涵盖的内容(24/7、仅工作日等)。

我有另一个模型,客户端,它包含所有基本的客户信息数据。

我需要将客户与 SupportType 相关联(Client Jones 拥有黄金级支持),但无法理解建立这种关系的“正确”方式。 “has_many”或“has_one”似乎都不适用于这种情况。

如何设置它以在一个视图中显示所有客户详细信息和支持参数?

TIA!

【问题讨论】:

  • 使用多对多关联来设置以下内容,这样客户就可以拥有白银、黄金等

标签: ruby-on-rails model associations


【解决方案1】:
class Client < ActiveRecord::Base
  belongs_to :support_type
end

class SupportType < ActiveRecord::Base
  has_many :clients
end

这样您可以使用a_client.support_type 访问客户的支持类型,并使用gold_support.clients 查看所有具有黄金支持类型的客户

您不能在 Client 模型中使用 has_one,因为在这种情况下 Rails aspects to find a client_id in the support_types DB table 如果我理解得很好,情况并非如此,因为许多客户端可以具有相同的 SupportType。

PS:记得在您的客户数据库表中添加一个 support_type_id 列

【讨论】:

  • 完美答案,易于理解。谢谢。
  • 如果你有一个名为support_type_id以外的外键,你可以写:belongs_to :support_type, :foreign_key =&gt; "foreign_key_id"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多