0

저는 Rails를 처음 사용하고 있으며 실시간 웹 응용 프로그램의 완성도가 부족한 여러 자습서를 따르고 있습니다. 각각의 파일에서 모델 - 뷰 - 컨트롤러를 사용하는 방법을 보여 주지만, 하나의 형식으로 여러 모델을 생성하는 방법을 보여주는 컨트롤러를 찾지 못했습니다.두 컨트롤러를 사용하여 단 하나의 인스턴스에서 두 인스턴스를 생성하는 방법

사용 사례 :

나는 사용자 모델, 연관되는 계정 모델을 가지고있다. 내가 irb에서 그것을 테스트했지만, 컨트롤러에서 사용자와 계정을 연결하기 위해 User 객체가 필요하지만, 사용자를 생성 할 때, 사용자 컨트롤러가 관리하는 것은 사용자를위한 양식 데이터 일뿐입니다. 자습서 및 계정은 자체 뷰에서 분리되어 자체 컨트롤러로 관리됩니다.

계정을 만들 때 사용자 컨트롤러에서 만든 사용자를 어떻게 사용할 수 있습니까? 가장 좋아하는 일은 동일한보기에서 사용자를 만들 때 계정을 만드는 것입니다. 하지만 내가 정말 좋아하는 것은 뷰 및 컨트롤러에 대한 전체 컨트롤을 갖는 방법과 이러한 요소를 디자인에 적용하는 방법을 보여주는 자습서입니다. 감사합니다

답변

1

당신이 찾고있는 것은 "중첩 된 속성"일 수 있습니다. http://apidock.com/rails/ActiveRecord/NestedAttributes/ClassMethods/accepts_nested_attributes_for

그렇지 않으면, 당신은 레일 MVC의 그것의 자신의 특별한 변형 인으로 실행 될 수있다

다음은 자세한 설명서입니다. 다른 컨트롤러에서 컨트롤러 작업을 호출하지 마십시오. 컨트롤러는 데이터와의 상호 작용이 아닌 웹 요청에 대한 응답을 처리합니다. 그것은 모델을위한 것입니다.

당신이 요구하는 것을 말하기가 약간 어렵지만, 예상치 못한 단순함에 실제로 빠져 들었다고 생각합니다. user-model0의 모든 항목은 User 개체/싱글 톤/클래스 항목을 통해 액세스 할 수 있습니다. 예 : User.find(1). User은 모든 컨트롤러와 모든보기에서 액세스 할 수 있습니다 (Account). 필요한 때에 사용하십시오! 댓글에서

편집 :

def action 
    user = User.new(params[:user]) 
    user.save 

    account = Account.new(params[:account]) 
    account.user = user 
    account.save 
end 

그러나! 이런 일을하는 방식은 오류를 잘 처리 할 수 ​​없습니다. 정말로 원하는 것은 중첩 된 속성을 사용하는 것입니다.이 속성을 사용하면 계정을 사용자의 일부로 만들거나 그 반대로 만들 수 있습니다.

+0

내가 모르는 값 정보를 추가합니다. "모든 컨트롤러에서 사용자에게 액세스 할 수 있습니다." 그래서, 먼저 사용자를 생성하고 해당 사용자와 관련된 계정을 생성 한 다음 사용자를 저장해야합니까? 나는 사용자를 저장하면 더 이상 액세스 할 수 없거나 User.last를 호출하여 액세스 할 수 있다고 생각합니다. –

+1

흠, 좀. 계정에는 user_id가 필요하며 사용자를 저장하기 전까지는 존재하지 않습니다. 그러나 사용자가 저장하면 액세스가 느슨해지지 않습니다 .... 1 초, 답변 추가. – Narfanator

+0

계정보기 양식에서 매개 변수가있는 양식을 보내지 않았더라도 "params [: user]"에 액세스 할 수 있습니까? –