2014-02-12 2 views
0

나는 ancestry 보석을 사용하는 Lines 모델을 가지고 있습니다.어떻게 문구 레일 인스턴스에?

A line can have children and parent lines. 

나는 Miniatures 모델을 가지고 있습니다.

Lines has_many Miniatures through the Minilines table. 

내 회선보기에는 해당 회선에 연결된 모든 소형 모형을 표시 할 수 있습니다. 그거야.

내가 할 수 있기를 원하는 것은 해당 줄에 관련된 모든 축소 모형을 보여 주며 그 자식입니다.

미니어처가 라인과 연결되어 있고 그 중 하나가 서브 트리 라인 인 경우 고유 한 true 또는 uniq을 사용해야합니다. 일부 조상 보석 작업을 누군가에게 얘기

나는 내보기에 다음을 넣어 :

<% Miniature.select('distinct *').joins(:lines).where(@line.subtree_conditions).each do |miniature| %> 
    <%= link_to miniature.name, miniature %><br /> 
<% end %> 

그는 내 문제는 보석, 오히려 레일 문제에 문제라고 생각하지 않았다. 그 코드가 무엇을

는 소형 오히려 name 및 소형의 id 댄에 속한다 (올바른) 소형으로 만 name과 라인의 id와 링크를 만들 수 있습니다. 주변을 둘러 보면서 많은 일을 할 수있게되었습니다.

나는 그것은 지금 정확한보고 일을 출력이

<% Line.select('distinct *').joins(:miniatures).where(@line.subtree_conditions).each do |miniature| %> 
    <%= link_to miniature.name, miniature %><br /> 
<% end %> 

에 코드를 변경했습니다. 미니어처의 name. 또한 올바른 miniature_id을 가지고 있지만 miniature 경로가 아닌 line 경로로 연결되어 있습니다. 예를 들어 소형 번호 3의 이름을 표시하지만 localhost:3000/lines/3에 연결됩니다.

나는 그것을 계속 들여다 보겠다. 그러나 누군가가 정확한 문제를 볼 수 있다면 나는 달 위에있을 것이다.

건배.

답변

1

두 번째 코드 블록에서 반환되는 레코드는 Miniature 개체가 아닙니다.이 개체는 Line 개체입니다.이 개체는 쿼리 한 클래스이므로 얻을 수있는 클래스입니다. :)

첫 번째 경우는 및 name 열이 Miniature에서 오는 것입니다. 이 대신에보십시오 : Miniature.uniq.joins(:lines).where(@line.subtree_conditions) 명시 적으로 미니어처 테이블에서 필드를 대상으로 SELECT를 제공합니다.

+0

예, 작동합니다. 나는 그것이 <%'Miniature.select ('distinct *')를 읽을 때 작동하지 않는다는 것이 이상하다는 것을 알았습니다. 조인 (: lines) .where (@ line.subtree_conditions) .each do | miniature | %>'하지만 뚜렷한 별개의 것들이 그것을 엉망으로 만든 것 같아요. 어쨌든이 작품과 감사합니다. 프로젝트에 참여할 수있게 해줍니다. 환상적. – Ossie