Боюсь, ваши ассоциации выглядят совершенно неправильно.Прежде всего, если у вас есть «has_many» на одной стороне ассоциации, , у вас должно быть a «own_to» на другой стороне.Во-вторых, я предполагаю, что done_user, admin_user и т. Д. Наследуют от пользователя.Правильно ли я?
И чем отличаются участвующий_пользователь, администратор_пользователь и т. Д. Друг от друга?Вам действительно нужны классы для каждого из них, вы можете обойтись с именованными областями?Я бы предложил вам упростить модель данных.Прямо сейчас твое моделирование выглядит нечетким.Пожалуйста, уточните.
EDIT
Честно говоря, я думаю, что ваше моделирование слишком сложное.Если бы я был вами, учитывая ваши описания * _users, я бы просто назвал области, чтобы получить этот тип пользователя.Так что в действительности
class Event < ActiveRecord::Base
has_many :event_users
has_many :users, :through => :event_users
end
class User < ActiveRecord::Base
has_many :event_users
has_many :events, :through => :event_users
end
Итак, напишите именованные области в вашей модели User, чтобы получить * _user.Вот отличный скринкаст на named_scopes .