基本上,用戶可以參與一個或多個事件作爲供應商或作爲該事件的成員。我需要幫助正確組成這個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