2010-01-30 34 views

回答

0

您可以随时排序与红宝石:parent.children.sort{|a,b| a.field <=> b.field}或类似的
或者你可以添加一个find方法,以父模型,像def self.find_ordered_by_field
不能想别的选项...

0

东西把排序在模型中是绝对要走的路。你的视图本身不应该有任何更多的ruby代码,因为测试你的排序是否按照你认为它应该的方式工作要困难得多。

当您在模型级别添加排序(并且在发布的链接中回答的效果很好)时,您可以添加一个自动化测试来验证它是否实际上按照您喜欢的方式排序。这是商业逻辑,它属于模型。

然而,有时候,您正在寻找的方式不是您通常想要的模型。也许你通常希望它们按名称排序,但在这一个视图中,您希望它们按照最新到最旧排序。至少,在控制器中进行排序,以便再次进行测试。但我个人还是会把它放在模型中。

+0

如果我选择走那条路线,我该如何在控制器中排序? – abeger 2010-01-30 03:13:36

+0

您可以按照Devenv在他的回答中推荐的方式使用排序方法,并将其传递给全局变量(@children = parent.children.sort ...) – 2010-01-30 03:33:30

相关问题