В принципе, Пользователь может участвовать в одном или нескольких событиях как (или потенциально одновременно) как поставщик, так и как член факультета.Мне нужна помощь в правильном формировании этой ассоциации 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?
Update:
Итак, я попытался использовать наследование одной таблицы, чтобы решить эту проблему, и я закончил с пользовательской таблицей, который записывает, содержащим только один тип пользователя. Хотя я использую однонаправленное наследование, как мне заставить моих пользователей иметь несколько типов? (Я знаю, что это, по существу, многие-ко-многим, я просто не уверен в том, как сделать это, используя 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
Просьба предоставить запросы, которые необходимо внести по этим данным. Конечно, указанное неверно, потому что вы указали две ассоциации с тем же именем, но с разными параметрами. –
Оригинальный пост обновлен. –
Я думаю, вы можете придерживаться 'has_many ... через ...' и использовать наследование одиночной таблицы для установления типов ссылок: общий (не для прямого использования), член и поставщик (унаследованный от общего). Я расскажу больше, когда будет готов. Не стесняйтесь смотреть, как работает STI. –