2016-11-08 1 views
0

레일스 5 앱에서 네임 스페이스를 사용하여 리소스를 정리 유지하려고합니다.레일 5 - 네임 스페이스 모델

나는 생성 명령에 네임 스페이스 폴더를 추가하여 명령 줄을 사용하여 리소스를 생성 해 왔습니다.

이는 네임 스페이스가 파일에 저장되는 기본 폴더에 대한 모델 폴더에서 폴더를 만든다.

나는 좋은 생각이 아니다 네임 스페이스 지정 모델을 제안 다른 게시물을 읽고부터했습니다.

내가 현재 가지고있는의 예는 다음과 같습니다

class Stance::Assessment < ApplicationRecord 

확실히 지금까지 작동하는 것 같다.

네임 스페이스 모델의 문제점은 무엇입니까?

문제가 있다면 폴더 그룹으로 모델을 구성 할 수 없거나 모델 클래스의 이름을 "Stance ::"로 지정해야한다는 의미입니까?

+1

네임 스페이스 모델을 강타하는 게시물을 연결할 수 있습니까? 당신이 관습을 따르고 있다면 나는 그것에 대한 강력한 논쟁을 찾을 수 없습니다. 'stance'라는 이름의 폴더 안에 파일을 그룹화하고, 클래스 앞에'Stance'를 붙이거나, 모듈을 사용합니다 (나는 선호합니다). –

+0

@AlexandreAngelim https://dhampik.com/blog/rails-admin-scaffold – Mel

답변

2

"namespacing"모델과 관련하여 다소 복잡합니다. 루비는 실제로 진정한 네임 스페이스를 가지고 있지 않습니다. 오히려 캡슐화를 제공하는 모듈을 가지고 있습니다.

레일 및 ActiveRecord는 Main 개체 (전역 개체)에 응용 프로그램 코드를 배치하도록 설계되었습니다. 이것은 나쁜 습관처럼 보일 수 있지만 매우 간단하고 컨벤션 오버 컨벤션 접근법과 잘 작동합니다. 또한 훨씬 간단한 자동 로딩 구성을 허용하고 추가 폴더에있는 모든 단일 파일을 중첩 할 필요가 없습니다.

네임 스페이스는 조직적인 장점이 있지만 충돌을 피할 수 있습니다.

  • 테이블 접두사, my_app_projects_tasks 같이 생성 된 테이블 이름을 가진 사용자 정의 조인을 작성해야 할 때 정말 불편 :하지만 뒷면에 몇 가지 사소한 통증이있다.
  • 다형성 경로 도우미를 사용할 때 my_app_projects_tasks_path과 같은 경로를 찾지 않도록 ActiveModel::Naming을 덮어 써야합니다.
  • 연결을 만들 때 명시 적으로 class_name 옵션을 설정하거나 ActiveRecord가 상수 이름을 결정하는 방법을 재정의해야합니다.
+0

다형성 경로 도우미 포인트에 대한 의견을 나에게 줄 수 있습니까? 지금 이것을 파악하려고합니다. http://stackoverflow.com/questions/40518887/rails-5-using-polymorphic-associations-rendering-the-views – Mel

관련 문제