2010-02-05 2 views
6

나는이 on a blog today을보고, 나는 마침내 생각! 레일스는 HQL 또는 Linq과 같은 형태를 갖습니다. 음, 아니. 나는 이것에 관해 무엇이라도 발견 할 수 없었다.이것은 무엇일까요? 관계형 대수 위에 구축 된 새로운 활성 레코드 체인 가능 쿼리 언어?

내가 정말로 알고 싶은 것 : 내가 테이블이 불려지는 것을 잊어 버리고 객체 이름만을 사용할 수 있습니까? 마침내 조인 구문을 잊어 버릴 수 있습니까? 나는 다른 모든 것을 잊기 시작하기 전에 그렇게하고 싶습니다 (인생 목표).

답변

2

지금까지 내가 이해, 이것은 당신이 당신의 복잡한 쿼리를 작성할 수 있다는 것을 의미하지

Object.find(:all, :conditions = > { :limit => 10, :offset => 5 } 

하지만 더 읽기 방법 게으른 평가와 AREL 구문

Object.all.limit(10).offset(5) 
+0

읽어보십시오. 왜 그렇게 좋은거야? –

+2

이것의 장점 중 하나는 내용을 요구할 때까지 표현을 평가하지 않는다는 것입니다. 그래서 당신이 그것을 반복 할 때까지 모든 SQL을 실행하지 않을 것입니다. 캐싱을 훨씬 간단하게 만들 것입니다. – jonnii

+0

감사합니다. @jonnii, interesting –

0

당신은 here에 대한 자세한 내용을보실 수 있습니다. LINQ에 대해서는별로 익숙하지 않지만 LINQ는 Django의 ORM에 사용되는 쿼리 인터페이스와 다소 유사하다고 생각합니다. 여하튼, 요지는 활성 레코드의 쿼리 인터페이스가 장고의 쿼리 인터페이스와 훨씬 비슷하다는 것입니다. 이전의 "저수준"쿼리 메서드는 많이 사용되지 않으며 이후 버전에서는 제거됩니다.

+0

는 사실 그 기사를 본했지만, 문제는 그래서? 그들은 많이 변했습니다. 이것에서 나오는 좋은 것이 있습니까? 당신이 체인 방식 쿼리 언어가 좋은 일이라고 생각하면 –

+0

음, 다음 네, 좋은 일이 밖으로오고있다. – mipadi

+0

죄송합니다. 이전에했던 것처럼 반환 된 ActiveRecords에서 쿼리를 연결하고 쿼리를 수행하는 것의 차이점은 무엇입니까? –

1

체인 방식 쿼리와 같은 :

이는 조건을 나타내는 다양한 범위를 작성하고 다음 혼합하고 일치와 지식의 쿼리가 실제로 때까지 실행되지 않습니다 ... 그들을 함께 체인 수 있습니다 결과물이 필요합니다 ('게으른 평가').

AREL의 구문은 표준 SQL 구문 대신에 그것을 사용하고 인식하고 SQL과 그 famiiar에 대한 유지하는 것이 더 쉽습니다 그래서 이전의 '레일'구문에 훨씬 가깝다.

+0

감사합니다. 귀하의 답변에 대한 링크를 추가하고 싶다면 실제로 좋을 것입니다. 이것을 사용합니까? 예? –