基本上,用户可以参与一个或多个事件作为供应商或作为该事件的成员。我需要帮助正确组成这个ActiveRecord协会
默认情况下,用户被分类为既不是供应商也不是教师成员,而是在事件的上下文中获得(或两者)状态(例如,用户已被接纳为事件为其教职员)。
看来我想说的是,用户有很多事件通过供应商或教师连接表(或两者),但我不知道我会去代表这在我的Rails模型。以下是我试过到目前为止:
class User < ActiveRecord::Base
has_many :events through => vendors
has_many :events through => faculty
end
这里有一个查询的样本,我认为我需要做:
Select * from vendors where user_id = 1;
Select * from faculty where user_id = 1;
有人可以提供一些方向如何正确的形成这ActiveRecord协会?
更新:
所以,我一直在使用单表继承来解决问题试过了,我已经结束了与记录只包含一个用户类型的用户表。在仍然使用单表继承的同时,如何让我的用户拥有多种类型? (我知道这基本上是一个多一对多的关系,我只是不知道如何做到这一点使用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
请提供您需要对该数据进行的查询。当然,指定的内容不正确,因为您列出了两个具有相同名称但参数不同的关联。 – 2014-08-29 19:14:43
更新了原始帖子。 – 2014-08-29 19:38:58
我认为,你可以坚持'has_many ...,通过...',并使用单表继承来建立链接类型:common(不用于直接使用),member和vendor(从common继承)。准备好后我会告诉你更多。随时看看STI如何运作。 – 2014-08-29 21:01:15