2016-06-30 2 views
0

사용자가 코스를 만들 수 있기를 바랍니다. (한 명의 사용자에게 속해야하므로) 다른 사용자가 만든 코스가 아닌 다른 코스에 참여할 수 있기를 바랍니다. 적절한 연관성은 무엇입니까? 코스와 사용자? 나는 다음과 같은 모델 연결을 만들고 싶어 :3 가지 모델 간의 연관

Class User < ActiveRecord::Base 
    has_many :courses 
    has_many :comments ,through: :courses 
end 

Class Course < ActiveRecord::Base 
    has_and_belongs_to_many :users #here i am not sure 
    has_many :comments 
end 

Class Comment < ActiveRecord::Base 
    belongs_to :courses 
end 

답변

0

난 당신이 무슨 말을하는지 이해하고있어 경우 - 당신은 세 번째 모델이 필요합니다 - 당신은 과정을 위해 당신이 belongs_to :user을 사용이

을 등록 호출 할 수 있습니다 각 과정이 사용자로 생성 된 경우

과정이 한 번 이상을 제공 할 것입니다 경우 두 HABTAM는 제외

Class Enrollment < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    has_and_belongs_to_many :courses 
end 

(, 당신은 과정의 각 인스턴스에 대해 추가 모델을 추가해야합니다 가지고와 귀하의 등록 모델과 등록은 해당 모델에 속하는 것없는 과정) 난 당신이 같은 것을 할 수 있어야 어떻게 생각

+0

을하고? 아, 코스의 모든 댓글이나 등록을 사용해야합니까? 답변 해 주셔서 감사합니다 – clair13

+0

'3 가지 모델'이 무엇인지 모르시겠습니까? 원하는 모델을 여러 개 가질 수 있습니다. 단 3 모델 - 그건 복잡합니다. 코스에 속하는 설명은 사용 방법 및 코스가 인스턴스마다 다를 경우 사용 방법에 따라 다릅니다. 코스가 항상 동일하다면, 똑같은 교사, 동일한 강의 계획서를 가르친 다음 코스에 댓글을 연결하십시오. 코스 인스턴스가 주석과 인스턴스가 서로 다른 경우 인스턴스는 구현 계획에 따라 달라집니다. – MageeWorld

+0

답장을 보내 주셔서 감사합니다. – clair13

1

: 또한 내가 쉬 방법 그래서 3 개 모델을 가지고하는 것은 불가능

Class User < ActiveRecord::Base 
    has_many :courses 
    has_many :course_users 
    has_many :subscribed_courses, through: :course_users, source: :course # I think you should be able to do foreign_key: :course_id, class_name: 'Course' 
    has_many :comments ,through: :courses 
end 

Class Course < ActiveRecord::Base 
    belongs_to :user 
    has_many :course_users 
    has_many :participants, through: :course_users, source: :user # I think you should be able to do foreign_key: :user_id, class_name: 'User' 
    has_many :comments 
end 

Class Comment < ActiveRecord::Base 
    belongs_to :courses 
end 

#course_users is a join table for courses and users 
class CourseUser < ActiveRecord::Base 
    # inside here you could have several other connections e.g grade of a user in a course within this join model 
    belongs_to :user 
    belongs_to :course 
end 
+0

오케이 말씀 드린 내용을 이해하지만 모든 사용자가 코스에서 의견을 표시하려면 어떻게해야합니까? Course.comments? – clair13

+0

네,'course.comments'을 할 수 있어요 – oreoluwa

+0

가입 한 학급과 참가자에 관해서 제가 별도의 모델을 만들어야하나요? 아니, 맞지? 어떤 컨트롤러에서 정의해야합니까? – clair13

관련 문제