Я просто хотел получить некоторые отзывы о лучших способах моделирования членства в команде/команде в рельсах.
я в настоящее время следующие:Моделирующие команды
class User
has_many :teams, :foreign_key => "owner_id" #user owns this team
has_many :memberships #user is a member of these teams
class Team
belongs_to :team_administrator, :class_name => "User", :foreign_key => "owner_id"
has_many :memberships
class Membership
belongs_to :team
belongs_to :user
Мне не нравится роль администратора команды, потому что я должен утверждать, что он и в членство, и что он владеет командой. Может быть, было бы лучше иметь is_administrator
недвижимость Membership
?
Другая проблема с этой моделью заключается в том, что я изо всех сил пытаюсь найти хороший способ определить, является ли UserA членом команды, которой владеет Пользователь. Я в настоящее время делаю:
Membership.first(:joins => :team, :conditions => {:id => params[:membership_id], :teams => {:owner_id => current_user}})
Где membership_id является членством, содержащего пользователь, который я пытаюсь определить, является членом команды, принадлежащей current_user.
Итак, у кого есть лучший способ моделировать это?
Спасибо за любой совет!
Edit: пользователь действительно может быть владельцем/членом нескольких команд
Если у пользователей только одна команда, вам действительно не нужна таблица/модель членства. если членство не является тем местом, где вы храните информацию об этом пользователе по отношению к команде, тогда да, вы должны сохранить is_administrator там – ErsatzRyan
Возможно, я должен был сделать это ясно, пользователь может мне стать членом/владельцем нескольких команд. – neiled