컨트롤러 내부의 액션을 모델 내부의 메소드에서 호출해야합니다. 이것은 다른 언어로 많이하는 일입니다 (MVC 프레임 워크로 작업 할 때). 그러나 루비와 함께이 작업을 한 번도 본 적이 없습니다. 액션은 아무 것도 렌더링하지 않으며 단순히 세션 변수를 업데이트합니다.Rails 컨트롤러 액션을 호출하는 모델
6
A
답변
5
MVC 패턴에서 일반적으로하는 일이 아닙니다. 모델에는 실제로 비즈니스 로직 (및 데이터 액세스) 만 있어야합니다. 전화하려는 내용과 그 이유에 대한 정보를 제공 할 수 있습니까? 보통 이런 식으로하려고 할 때 뭔가가 있어야 할 곳이 아닌 냄새가 난다.
이 보통 내가 볼 수있는 방법입니다
- 모델 - 이러한 데이터는 는 비즈니스 로직
- 컨트롤러에 대한 방법을 가지고 객체 - 다음은 제어 앱에 의해 취해진 조치입니다 모델은 그들이 는
- 보기를 방출 무엇에 그것을 말해보기를 제어 , 무엇을 그들에게 -이 인터페이스 층을 그것은,JS, 모든 형식 (HTML에있을 수 있습니다XML)하지만 당신은 모델에서 컨트롤러에 뭔가를 호출하려는 경우가 그것을
에 약간의 논리를 가지고, 그것은 모델의 제어 로직이 너무 거기에 의미 할 수 있습니다.
또는 어쩌면 방금 도처에서 사용할 수있는 메소드가 있습니다 (이는 도우미 메소드이며 실제로 모델과 컨트롤러와 관련이 없습니다). 이 경우,/lib 디렉토리의 자체 모듈에 넣어야합니다.
편집 : 예, 세션 변수는 컨트롤러에서만 터치/업데이트해야합니다. 아마도 당신은 당신의 모델에 너무 많은 컨트롤 타입 로직을 가지고있을 것입니다. 컨트롤러의 실제 동작의 일부인 경우 로직이 실제 모델과 얼마나 밀접하게 연관되어 있는지 다시 생각해보십시오.
0
당신은 컨트롤러 액션 호출합니다 (session
가 @session
변수로 정의되어 있기 때문에 또는 cahange 세션과 개인의) 당신이 유사 할 수 있습니다 편집 session
방법이 필요합니까 그래서 만약 당신이 모델의 메소드에 PARAM으로 컨트롤러 인스턴스를 전달한다 모델 경우 컨트롤러
def change_session(controller)
@ses = controller.send :session
//some actions
end
는
def something
s = Session.new
s.change_session(self)
...
end
관련 문제
- 1. 방법의 asp.net MVC에서 페이지로드 컨트롤러 액션을 호출하는
- 2. Ruby On Rails 모델/컨트롤러 질문
- 3. 레일즈 엔진 컨트롤러 액션을 오버라이드
- 4. rails3의 javascript에서 컨트롤러/액션을 실행하십시오.
- 5. 컨트롤러 액션을 동적 매개 변수로 만들려면 어떻게해야합니까?
- 6. Json을 사용하여 Json을 호출하여 컨트롤러/액션을 호출합니다.
- 7. Cake PHP 경로 컨트롤러/액션을 다른 컨트롤러/액션에 전송
- 8. CakePHP의 : 실행 컨트롤러 cron 작업으로 컨트롤러 액션을 실행하려고
- 9. 액션을 호출하는 방법 <> 수정 윈폼은
- 10. JavaScript를 통해 Flash SWF에서 액션을 호출하는 도구
- 11. RoR에서 롤백 컨트롤러/모델 생성
- 12. (Rails) 다중 모델 컨트롤러 및 인덱스 뷰 설계 ... ...?
- 13. Rails 3에서 모델/컨트롤러/헬퍼를 변경할 때마다 Autotest가 실행되도록 알려주십시오.
- 14. 모델, 뷰, 컨트롤러 혼란
- 15. 컨트롤러 이름의 모델 이름
- 16. (모델/뷰/컨트롤러) MVC
- 17. 컨트롤러/http.context없이 모델 바인딩
- 18. 탐색 컨트롤러 : 컨트롤러 대 모델 저장
- 19. 모델/뷰/컨트롤러/메일러 용 레일 생성기
- 20. Rails에서 호출하는 컨트롤러/액션 찾기
- 21. Rails 모델 (집계되지 않음)
- 22. rails 세션 모델
- 23. Rails 중첩 모델 필터
- 24. 모델 상속 및 컨트롤러/뷰의 모델 특정 코드
- 25. MVC의 뷰, 컨트롤러, 모델 그룹화
- 26. CakePHP의 모델 및 컨트롤러 구조
- 27. 모델/뷰/컨트롤러 in emacs
- 28. 게시물 모델 및 컨트롤러 아키텍처
- 29. 스프링 MVC - 컨트롤러 간 모델
- 30. 모델 클래스에서 컨트롤러 메서드 호출
문제는 내가 인증을위한 플러그인을 가지고 있고 사용자가 (플러그인 내부에 나를 기억 기능을 통해 로그인 할 때 메소드를 호출 할 필요가있는 BYP 모든 로그인 컨트롤러 동작을 조사합니다. 그렇지 않은 경우 여기에서 세션 데이터를 분명히 변경합니다. 컨트롤러에서 메서드를 호출해야하는 이유는 분석 추적과 관련이 있으며 실제로는 사용자가 볼 수있는 것이 아닙니다. – scott