팀/팀 멤버십을 모델링하는 더 나은 방법에 대한 피드백을 얻고 싶습니다. 나는 그가 회원에 모두 있다고 그는 팀을 소유하고 있음을 유지해야하기 때문에모델링 팀
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가 UserB가 소유하고있는 팀의 구성원인지 확인하는 좋은 방법을 찾기 위해 애를 먹고 있다는 것입니다. 현재 수행 중입니다.
여기서 membership_id는 current_user에 속한 팀의 구성원인지 확인하려고하는 사용자를 포함하는 멤버십입니다.
그럼 누구나이 모델을 만드는 더 좋은 방법이 있을까요?
어떤 조언을 주셔서 감사합니다!
편집 :
class User
has_many :teams, :as => team_administrator, :foreign_key => "owner_id"
has_many :teams, :through => :memberships #user is a member of these teams
has_many :memberships
class Team
belongs_to :team_administrator, :polymorphic => true, :foreign_key => "owner_id"
has_many :users, :though => memberships
class Membership
belongs_to :team
belongs_to :user
:는 사용자가 실제로 당신이 필요로하는 다형성
@membership = current_user.membership.find(params[:membership_id], :joins => :team)
사용자가 한 팀만있는 경우 회원 테이블/모델이 실제로 필요하지 않습니다. 멤버십이 팀과 관련하여 해당 사용자에 대한 정보를 저장하는 곳이 아니면 yes is_administrator를 저장해야합니다. – ErsatzRyan
아마도 내가 분명히 말했듯이, 사용자는 나에게 여러 팀의 회원/소유자가 될 수 있습니다. – neiled