Ruby On Rails分层关系建模

Chr*_*nch 6 inheritance ruby-on-rails single-table-inheritance

我有一个名为users的基表,它包含有关用户的所有常见信息,如姓名,地址,电话号码等

我有另一个名为clients的表,它包含有关客户端的特定信息(例如客户端的公司名称及其URL),并从users表继承用户信息.客户端具有外键user_id,其映射回关于用户的信息.

我有另一个名为client_admins的表,它包含有关client_admins的特定信息,还有一个user_id字段和一个client_id字段(链接到clients表).

我有另一个名为super_admins的表,它链接到users表并具有关于超级管理员的特定信息.

我知道我可能会逃脱单表继承,因为每种类型之间没有很多不同的数据,只是不同的功能和特权.

在Rails 3中对此进行建模的最佳方法是什么?

Amo*_*tir 2

在您的用户模型中:

has_one :client
has_one :client_admin
has_one :super_admin
Run Code Online (Sandbox Code Playgroud)

在您的客户端模型中:

belongs_to :user
has_one :client_admin
Run Code Online (Sandbox Code Playgroud)

在你的 client_admin 模型中:

belongs_to :user
belongs_to :client
Run Code Online (Sandbox Code Playgroud)

在你的 super_admin 模型中:

belongs_to :user
Run Code Online (Sandbox Code Playgroud)