2011-01-30 7 views
1

안녕하세요 저는 레일에서 내 방향으로 인해 붙어 있습니다.이 두 메소드의 차이점은 무엇입니까

사용자 모델, 코스 모델 및 CourseEnrollment 모델이 있습니다.

나는이 방법을 만들 수 있습니까

link_to 'join' CourseEnrollment.create(:course_id => course.id, :user_id => current_user) 

처럼 내 코스 인덱스보기에서 링크를 추가 할

내 모델에 속하는? 내 사용자 모델에서 role_assignments.create(.....)을 사용하는 메서드를 정의했기 때문에 혼란 스럽습니다. 이 2 가지 작성 메소드의 차이점은 무엇입니까? 방법으로 course_enrollments.create를 사용할 수 없습니다. Thx 시간 내

답변

2

나는 당신이 묻는 것에 대해 다소 혼란 스럽지만, 최선을 다할 것입니다.

(첫째, 당신의 예에서 current_user 아마 current_user.id해야합니다.)

당신이 CourseEnrollment.create 전화

는 단순히 지정된 속성으로 새로운 CourseEntrollment 모델을 만들 수 있습니다.

당신의 User 모델 has_many :role_assignments가 있다고 가정하면 (예를 들어, 사용자의 iduser_id을 설정합니다) 당신이 당신의 User 모델 내에서 @role_assignments.create를 호출 할 때

, 레일은 자동으로 당신을위한 연결을 만듭니다. 하지만 이것은 모델 자체 내에서 수행 할 필요가 없습니다 :

current_user.role_assignments.create(...) # automatically sets the association

을 또한 User 모델 has_many :course_enrollments가, 다음은 CourseEnrollment 모델을 생성하고 자동으로 현재 사용자와 연관 것이라고 가정 :

current_user.course_enrollments.create(...)

+0

안녕하세요. 내보기에서'CourseEnrollment.create (...) '대신'current_user.course_enrollments.create (: course_id => course.id, : user_id => current_user')를 사용할 수도 있습니까? – daniel

+0

당신은 수동으로하지 않아도됩니다. ': user_id'를 설정하면됩니다. ** 그러나 **, 컨트롤러에서 일어나야합니다.보기가 아닙니다! – ClosureCowboy

관련 문제