使用rails上的sort_by ruby​​对来自另一个表的数据进行排序

时间:2011-02-18 02:42:54

标签: ruby-on-rails sorting associations

我有两个模特:Todo和Duedate。 Duedate有很多东西,同样Todo属于Duedate。 Duedates表包含id和'date'数据类型条目。每个Todo对象都有一个duedate_id列,对应于Duedate id。

Todo在其中有其他值,如优先级和已完成,我按其排序:

@todos = @todos.sort_by(&:priority)

我想按日期排序@todos,但我不确定如何告诉sort_by在duedate表中使用与duedate_id相关联的日期。我不能只做

@todos = @todos.sort_by(&:duedate_id)

因为它只是将@todos按日期输入到duedate表中排序,而不是按条目对应的日期排序。有人可以帮忙吗?

谢谢, 罗斯

2 个答案:

答案 0 :(得分:1)

您正在使用symbol_to_proc糖方法。您可以使用plain-old block参数进行sort_by:

@todos = @todos.sort_by{ |todo| todo.duedate.date }

答案 1 :(得分:0)

为什么你有2个模型,为什么你的todo模型中没有duedate字段呢?

如果您的待办事项模型中有截止日期字段,则可以定义范围以对待您的待办事项。