【发布时间】:2014-08-30 16:35:58
【问题描述】:
我试图在 Rails 中使用单表继承作为允许用户拥有多个用户子类型(例如,教师、供应商等)的一种方式。我最终得到了一个用户表,其中的记录只包含一个用户类型。在仍然使用单表继承的同时,如何让我的用户拥有多种类型? (我知道这本质上是一个多对多的关系;我只是不确定如何使用 STI 来实现这一点。)
id | first_name | last_name | birth_date | city | zip_code | email | type | created_at | updated_at
----+------------+-----------+------------+------+----------+-------+---------+----------------------------+----------------------------
1 | Akira | Yamaoka | | | | | Vendor | 2014-08-30 14:58:26.917333 | 2014-08-30 14:58:26.917333
2 | Pyramid | Head | | | | | Faculty | 2014-08-30 15:02:04.70209 | 2014-08-30 15:02:04.70209
这是我的模特的课程:
用户.rb
1 class User < ActiveRecord::Base
2 end
vendor.rb
1 class Vendor < User
2 belongs_to :user
3 belongs_to :event
4 end
faculty.rb
1 class Faculty < User
2 belongs_to :user
3 belongs_to :event
4
5 end
【问题讨论】:
-
你为什么需要
has_many :vendors以及User、Vendor、Faculty之间的所有这些关系?看起来有点奇怪。 -
用于单表继承。
-
这不是 STI,这是 STI 内部的一些奇怪的东西;)
-
哎呀!也许你是对的。摆脱它。
标签: sql ruby-on-rails inheritance ruby-on-rails-4