Rails : 모델 종속성 클래스 위치에 대한 모범 사례?
-
21-08-2019 - |
문제
나는 Rails 앱이 상당히 잘 움직이고 있지만, 내가 직접하고 있다는 사실은 가난한 잔디가 결국 이것을보고 "도대체 무슨 생각을하고 있었는가? 왜 이것을 여기에 넣었습니까?! ?! "
가난하고 미안한 영혼은 단일 모델 클래스 외에는 아무것도 사용하지 않는 일련의 클래스를 볼 것으로 기대하는 곳은 어디입니까? 분명히, 나는 클래스 테마 델과 함께 _model.rb에서 그것을 chuck 할 수 있지만, 이것은 계획된 두 클래스를 넘어 확장 될 수 있습니다 ...
나는 lib에 대해 생각했지만 모든 사람의 세상에 대한 견해를 혼란스럽게 할 필요는 없습니다 ....
고맙습니다.
내 전임자 감사합니다.
해결책
그것들을 남겨 두십시오 the_model.rb
둘 이상의 장소에서 필요할 때까지. 불필요하게 리팩토링되면 가장 간단한 일을하지 않을 수 있습니다. 당신은 그것을 필요로하지 않을 것입니다.
이 시점에서 일반적인 패턴은 "관심사"에 대한 디렉토리를 만드는 것입니다. 보다 Jamis Buck 의이 웹 로그 게시물 또는 Peter Marklund에 의해 이것 자세한 내용은.
다른 팁
일반적으로 : 클래스 이름을 파일 시스템 위치로 변환 할 때 Rails 이름 지정 규칙을 따르십시오. (즉, 수업을 유지하십시오 FooHelper::Bar
안에 foo_helper/bar.rb
)
한 번만 사용되는 작은 도우미 클래스에 대한 예외를 제외하고 모델과 동일한 파일에 보관할 수 있지만 예외가되어야합니다. (그러나 대화도 사실입니다. 한 줄의 단일 라인 파일을 생성하지 마십시오)
모듈과 클래스 네임 스페이스를 사용하여 유리하게 사용하십시오. 모델 만 사용하고 의존하는 도우미 클래스가있는 경우 모델 클래스의 네임 스페이스에 넣습니다.
class TheModel::HelperClass
end
파일 시스템의 위치는 다음과 같습니다 app/models/the_model/helper_class.rb
그리고 당신의 모델에 의존하지 않는 것은 아마도 여전히 네임 스펙을 할 수 있습니다.
module Bar
class Foo
end
end
살고 있습니다 bar/foo.rb
, 물론이야
당신은 아마도 모델이 아닌 물건을 넣는 것을 두려워해서는 안됩니다. lib
- 이것이이 디렉토리의 것입니다 ~을 위한
말하고 싶습니다 우려, 유용하지만 실제로 올바른 방법은 아닙니다. 하나의 여러 파일로 클래스하면 그렇게하지 않는 것 같습니다.