문제

나는 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 - 이것이이 디렉토리의 것입니다 ~을 위한

말하고 싶습니다 우려, 유용하지만 실제로 올바른 방법은 아닙니다. 하나의 여러 파일로 클래스하면 그렇게하지 않는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top