2011-04-26 4 views
1

클라이언트 용 대차 대조표에서 순 자산을 추적하는 앱이 있습니다. 많은 잔액 시트가있는 클라이언트 모델과 클라이언트에 속한 잔액 시트 모델이 있으며 각 잔액 시트에는 많은 자산과 많은 부채 (중첩)가 있습니다. 대차 대조표의 표시 페이지에는 자산, 부채 및 총 순자산이 표시됩니다. 현재 밸런스 시트는 분기 (1,2,3 또는 4)와 연도를 입력하여 정렬됩니다. 따라서 각 고객은 Q1 2010, Q2 2010 등으로 나열된 잔액 시트를 갖게됩니다.레일 모델의 이전 항목 검색

내가 원하는 것은 주어진 대차 대조표 쇼 페이지의 자산, 책임 및 순자산 합계를 이전에 입력 한 해당 대차 대조표와 비교하는 것입니다. 이전 출품 일 경우 지난 분기 또는 작년 출신 일 수 있습니다.

어떻게하면됩니까?

def nextname 
    self.class. 
    order("id"). 
    where("id > :id", attributes.symbolize_keys).first 
end 

이 유일한 문제는 다음과 같습니다

UPDATE가 좋아, 더 간단한 모델에 있도록 (내 클라이언트 모델) 나는 목록에서 다음 또는 이전 클라이언트 이름을 표시하도록 기초를 파악

정의되지 않은 메서드`이름 '무기 호에 대한 : NilClass 추출 소스 (라인 # 37 정도) :

37 :가 테이블의 마지막 클라이언트에 도달 할 때, 그것은 오류를 반환% = @ client.nextname.name %>

다른 레코드가없는 곳에 공백을 반환하려면 무엇을 작성해야합니까?

+0

체크 아웃이 질문에 http : // 유래

def next self.class.order("id").where("id>?", self.id).first end 

는 도우미에서이 같은 방법을 만들 것입니다. co.kr/questions/5570632/rails-get-placement-of-records/5570899 # 5570899 – fl00r

+0

및 http://stackoverflow.com/questions/5735062/next-object-problem-on-rails/5735128#5735128 – fl00r

답변

1

정의되지 않은 항목에 대해서는 항상 메소드를 호출해야합니다. 이것은 언제나 many solutions을 제안한 문제였으며 각각은 다양한 장점이 있습니다.

이 경우 당신이해야 할 일은보기를 복잡하게하는 것을 피하기 위해 도우미 메서드를 작성하고 그 일을보다 구체적으로 모델화하는 것입니다.

def name_for_client(client) 
    client and client.name 
end 

귀하의 경우에는이 같이 사용할 것이다 :

<%= name_for_client(@client.next) %> 
+1

감사합니다. 이것은 매우 도움이되었습니다. 이 질문의 더 복잡한 버전이 있지만 최근 질문에 편집본을 포함 시켰습니다. 도와 주셔서 감사합니다! – FattRyan

+0

질문의 해당 부분에 대답하려면 관련된 가치관과 열에 대해 더 구체적으로 설명해야하며, 수행하려는 작업을 대략적으로 다루어야합니다. 나는 내가 이해 한 부분에만 대답했다. – tadman