Я хотел бы иметь одну модель (событие), которая имеет несколько полиморфных ассоциаций HABTM для одной и той же модели пользователя.Rails, has_many полиморфная ассоциация с одной моделью
Он должен работать что-то вроде этого:
< событий ActiveRecord :: Base
has_many: admin_users,: через =>: event_users,: источник =>: userable,: source_type => ' Пользователь»
has_many: participating_users,: через =>: event_users,: источник =>: userable,: source_type => 'Пользователь'
has_many: paid_users,: через =>: event_users,: источник => : UserA BLE,: source_type => 'Пользователь'
has_many: done_users,: через =>: event_users,: источник =>: userable,: source_type => 'User'
конец
класс EventUser < ActiveRecord :: База
belongs_to: userable,: полиморфный => верно
belongs_to: событие
конец
Пользователь < ActiveRecord :: Bas
has_many: event_users, а: =>: userable
has_many: события,: через =>: event_users
конец
Это почти работает !! Проблема в том, что userable_type получает тип «Пользователь» для всех разных ассоциаций. Можно ли это решить?
Извините, я новичок в рельсах (но мне это нравится!). Все модели * _user находятся здесь, чтобы сообщить модель события, если пользователь заплатил, или если он/она закончил отчет или если он/она является администратором мероприятия.Таким образом, в основном они абсолютно одинаковы и просто сообщают модели событий о конкретном пользователе. – jonepatr
Теперь я скорректировал модели так, что они почти правильны, за исключением того, что userable_type установлен для пользователя, а не для участия в нем – jonepatr
. Но если я использую named_scopes, то рельсы автоматически создают правильное условие для меня, когда я использую вложенные формы? – jonepatr