2010-03-26 7 views
24

루비에서 작은 응용 프로그램을 개발하기 시작했고 많은 문제가 발생합니다. ASP.NET MVC에 대한 1 년의 경험이 있고 모델보기 및 컨트롤러가있는 집에서 느끼는 것이라고 말해야합니다. 필자는 오토 맵퍼 (AutoMapper)의 도움으로 뷰 모델을 광범위하게 사용하여 레일 모델에서 뷰 모델을 유사하게 사용하는지 궁금해했습니다.보기 모델이 레일에 사용됩니까?

다양한 예제 (주로 레일 캐스트)에서 볼 때 여러 모델의 데이터 (ASP.NET MVC에서 frowned 됨)를 결합하거나 모델에서 가상 속성을 사용하는 것이 일반적입니다 누락 된 데이터를 얻습니다.

예를 들어, 비즈니스 모델이 UI 요구 후에 모델링되어서는 안된다는 것을 알고 있습니다. 예를 들어, 모델에 '비밀번호 확인'속성이 없어야합니다. 이는 뷰 모델 속성이어야합니다.

레일스 가상 속성이이 원칙을 위반하는 것 같습니다.

레일에서 어떻게 이루어 집니까?

감사합니다.

+0

ASP .NET MVC는 의사 다중 모델이라는 개념을 가지고 있습니다. 일반적으로 사용자가 직접 작성하는 단일 객체에 여러 객체를 래핑합니다. – Kezzer

답변

16

View Model의 개념을 올바르게 이해한다면, 레일즈에서는 즉시 명확하지 않지만 개념적으로 허용되지 않거나 싫어하거나 허용되지 않는 개념입니다. 모델을 테이블에 완벽하게 일대일로 매핑하기위한 특정 요구 사항이 없으므로 적절한 추상 수준에서 자유롭게 작업 할 수 있습니다.

하나의보기에서 여러 모델을 업데이트하는 것이 약간 까다로울 수 있지만보기에서 여러 모델을 참조하는 것이 특히 좋지 않다고 생각합니다 (그렇다면 약간의 재 작업이 필요한 일부 영역이 있음).

어쨌든, 레일스에서 ​​나는 주로 "발표자"패턴이라고 불리는 것에 대해 이야기하고 있다고 생각합니다. 일부 참조 (아마 당신은 원하는 것보다 더 많은 것을 위해 구글 "레일 발표자 패턴"또는 필요) :