2009-11-15 3 views
0

레일즈 2.3을 사용하여 간단한 프로젝트 공동 작업 도구를 구축하고 있습니다. 인증은 Restful Authentication 플러그인을 사용하여 처리하고 역할 요구 사항 플러그인을 사용하여 역할을 관리합니다.레일에서 사용자 공동 작업

사용자 공동 작업을 만들어야합니다. 예를 들어, 권한이있는 사용자가 로그인 한 경우 사용자는 User에 속한 팀을 만들 수 있으므로 팀이 로그인하여 사용자 데이터를 작성/편집/업데이트/삭제할 수 있습니다. 따라서 모든 사용자는 공동 작업을 위해 팀을 만들 수 있습니다.

내 시도에서 초대 모델을 사용해 보았습니다. 사용자가 다른 사용자 (invitation_id와 함께)를 초대 한 다음 컨트롤러/찾기를 (invitation_id)로 필터링했습니다. 초대 된 사용자가 로그인하면 초청자의 사용자 데이터 만 볼 수 있습니다. 하지만 그게 관리성에 좋지 않고 복잡한 코드 기반을 생성합니다.

이 사용자 공동 작업 시스템처럼 구현할 수 있습니까? 그래서 가장 좋은 방법은 무엇입니까?

감사

답변

3

아마 has_and_belongs_to_many 사용자가 공동 작업 또는 프로젝트 클래스를 만들 것이다.

class Collaboration 
    has_and_belongs_to_many :users 
end 
또한 공동 소유자 및 회원에 대해서는 다른 액티브 관계를 설정할 수

(즉, 당신이 비즈니스 로직을 맞는 경우.)

예를

class Collaboration 
    belongs_to :owner, :class_name => 'User' 
    has_and_belongs_to_many :members, :class_name => 'User' 
end 

그것은 일반적으로 가능한 컨트롤러 (와 모델)에서이 논리의 정도를 유지하는 것이 가장 좋습니다. http://weblog.jamisbuck.org/2006/10/18/skinny-controller-fat-model을 참조하십시오.

관련 문제