2012-04-20 5 views
1

내가 찾는 것은 사용자가 프로젝트를 만들고 그 프로젝트의 관리자가 될 수있는 시스템을 설정하는 적절한 방법입니다. 사용자는 다른 관리자를 프로젝트에 추가 할 수 있습니다. 마지막으로 관리자가 아닌 다른 사용자가 프로젝트에 참여할 수 있습니다.프로젝트 관리자와 함께 Rails에서 프로젝트를 구현하는 방법

사용자가 프로젝트의 관리자인지 여부를 확인하여 편집/업데이트 권한이 있는지 확인하고 싶습니다. 이견있는 사람? ....

감사를

는 내가 아마 users_projects 테이블과 projects_admins 테이블을해야합니다 내기,하지만 난 그 레일 관계로 변환하는 방법을 알아낼 수 없습니다!

답변

1

좋아, 나는 그것을 시도 줄 것이지만 여기에 너무 많은 코드가없는

를 내가 여기에 3 개 모델을 참조하십시오.

  • 사용자
  • 프로젝트를
  • ProjectAdmin
에게

첫 번째 2는 단순한 모델이며 일부 특성이 있습니다. 세 번째 것은 둘 사이의 관계이며 n : m 관계가됩니다. 그러므로 has-many-through 관계를 사용하는 것이 가장 좋습니다. 모델로 다음 ProjectUser라는 이름의 당신이 추가로 마이그레이션하여 3 개 개의 테이블을 생성하고, 프로젝트의 사용자를 위해 나중에 유사한 관계를 추가해야 물론

class ProjectAdmin < ActiveRecord::Base 
    belongs_to :project 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :project_admins 
    has_many :projects, :through => :project_admins 
end 

class Project < ActiveRecord::Base 
    has_many :project_admins 
    has_many :admins, :through => :project_admins 
end 

. 적어도 rails guide about relations, section "has-many :through"을 살펴보십시오.

는이 둘 사이에 일대일 관계이어야 프로젝트에 제작자를 추가하려면, 그래서이하기에 충분해야한다 :

class Project 
    has_one :creator, :class_name => "User" 
end 

(및 마이그레이션에 creator_id 물론)

+0

좋아요! 이 답변을하지 않는 유일한 방법은 (그리고 아마도 그것에 대해 더 분명히해야합니다) 어떤 사용자가 프로젝트를 만든 추적하는 방법입니다. 내가 belongs_to 같은 것을 추가 할 수 있다고 생각하고 있었다 : creator, class_name => "User", 그렇다면 User 모델에 무엇을 넣어서 칭찬 하겠는가? –

+0

user.created_projects를 찾을 수 있도록 사용자 모델에 어떤 내용을 입력해야합니까? 내가 has_many : created_projects, : class_name => "projects"를했다면, 프로젝트 테이블의 creator 열에서 가져올 것을 알 수 없습니다. –

+1

신경 쓰지 마, 알아 냈어. has_many : created_projects, : class_name => "Project", : foreign_key => "creator_id"라고 말해야합니다. 고마워요! –

관련 문제