2011-04-26 85 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