I have a User model. A user can be either a dj, a club, or a clubber (this is controlled by the User#account_type
attribute).
A club can have many djs
, and a dj
can have many users:
enumerated_attribute :account_type, %w(^clubber dj club), :nil => false do
label :clubber => "Clubber"
label :dj => "DJ"
label :club => "Club"
end
has_many :dj_club_relationships, :class_name => "User", :dependent => :destroy
has_many :dj_user_relationships, :dependent => :destroy
has_many :djs, :through => :dj_club_relationships, :class_name => "User"
has_many :users, :through => :dj_user_relationships
However, this doesn't work as well as expected, since Rails doesn't know, for example, that it needs to destroy all dj_club_relationships
with club_id
when the user being destroyed is a club, and with dj_id
when the user is a dj
.
How can I help rails
know about it?