2009-04-29 3 views
3

레일스에 SQL 쿼리를 넣어야하는 가장 좋은 방법은 무엇입니까?어디에서 SQL 쿼리를 레일즈에 넣어야합니까?

  • 나는 예를 들어 모델의 메소드를 만들어야합니다 : 다음의 모든 조건을 찾기 방법을 사용하고있어 find_all_public_items는 컨트롤러에서 사용한. 마찬가지로 모든 쿼리를 한 곳에서 처리 할 수 ​​있지만 모든 쿼리가 해당 요구에 정확히 맞아야한다는 유연성이 부족합니다.

  • 컨트롤러에서 find/find_by_sql을 사용해야합니까? 예를 들어 수천 가지 방법을 만들지는 않지만 제어기가 데이터베이스에서 데이터를 빠는 방법에 대한 제어 권한을 잃어 버리는 것입니다.

답변

6

모델에 넣어야합니다. named scopes도 조사 할 수 있습니다.

+0

명명 된 스코프 메커니즘은 매우 멋지게 보입니다. 하루의 필요성에 대한 "where"절에 대한 힌트가 주어지는 쿼리를 생성하는 짧고 달콤한 매크로입니다. 감사. – Roboprog

+1

또한 나는 단순히 "thou shalt"(함축적이라 할지라도)라고 말하는 것보다 쉽게 ​​이해할 수있는 것을 지적했다. – Roboprog

+0

명명 된 범위는 함께 연결할 수 있기 때문에 특히 좋습니다. – cpm

8

모델에 관련된 모든 것을 모델에 넣습니다. 기간.

관련 문제