2011-04-26 79 views
1

一個條目我有跟蹤資產負債表上爲客戶的資產淨值的應用程序。有一個客戶模型有許多資產負債表,一個屬於客戶的資產負債表模型,每個資產負債表都有很多資產和很多負債(嵌套)。在資產負債表的顯示頁面上列出資產,負債和總淨值。目前,資產負債表通過輸入一個季度(1,2,3或4)和年度進行排序。所以每個客戶最終都會列出2010年第一季度,2010年第二季度等等。檢索軌道模型

我想要做的是資產,負債和淨資產總額與該客戶端的先前輸入的資產負債表比較任何給定的資產負債表顯示頁面上。這可能是從上個季度或去年,只要它是以前的入口。

我該怎麼做?

UPDATE好了,一個更簡單的模型(我的客戶端模式),我想通了的基礎,以顯示在列表中的下一個或以前的客戶端名稱:

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

與此唯一的問題是當它到達表中的最後一個客戶端,它會返回錯誤:

未定義的方法'名稱」的零:NilClass 提取的源(左右線#37):

37:<%= @ client.nextname.name%>

我需要做什麼才能返回一些空白那裏沒有其他記錄寫?

+0

結賬這個問題的http://計算器。/5570632/rails-get-placement-of-records/5570899#5570899 – fl00r 2011-04-26 20:51:28

+0

and this http://stackoverflow.com/questions/5735062/next-object-problem-on-rails/5735128#5735128 – fl00r 2011-04-26 20:53:23

回答

1

你應該總是疲憊的呼籲可能無法定義的東西方法。這一直是一個暗示many solutions的問題,每個問題都有其不同的優點。

在這種情況下,你應該做的是寫一個輔助方法來避免複雜化你的看法,並認爲是它做什麼更具體的模型方法。

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

在你的助手,你會創建這樣的方法:

def name_for_client(client) 
    client and client.name 
end 

你的情況,你可以使用這樣的:

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

謝謝,這非常有幫助。這個問題有一個更復雜的版本,但我已經包含在最近的一個問題編輯中。謝謝您的幫助! – FattRyan 2011-04-27 02:56:19

+0

要回答這個問題,你應該更具體的關於價值觀和參與列,以及你正在試圖做什麼你粗糙的拿的那部分。我只回答了我理解的部分。 – tadman 2011-04-27 04:45:50