我有2个模型:task
和request_task
。它们是不同的表,因为它们是非常不同的项目。
我还有一个"我的任务"我的应用程序的一部分,我想显示一个结合了tasks
排序的request_tasks
和due_date
的列表。
我看到了一些选项,但我不确定哪种方法最干净。我试图找到尽可能简单的解决方案并遵循大多数惯例。
在我看来,这会起作用,但速度慢而且性能不高。我宁愿使用DB的强大功能来选择和排序数据而不是Ruby。这个列表可能有几百条记录。
# Pseudocode
tasks = current_user.tasks
request_tasks = current_user.request_tasks
sorted_records = (tasks + request_task).sort! { |a, b| a.due_date <=> b.due_date }
我更喜欢这样的东西,但问题是我不知道如何获取记录并实例化正确的模型(task
或request_task
)。我也不太擅长这个所需的SQL:
class AbstractTask
def records
# Some ActiveRecord/SQL that selects filtered Tasks and RequestTasks from DB and instantiates proper model
end
end
# Combines Tasks and RequestTasks that match criteria and are ordered
records = AbstractTask.records.where(user_id: current_user.id).order(:due_date)
这&#34;有效,但是我会有一堆未使用的属性,因为tasks
和request_tasks
非常不同。
但这样做的好处是能够查询单个表并返回所有相关记录的列表。
这可能是目前最简单的方法。我认为它会给我我想要的一切,只有一半记录的未使用的属性。如果没有其他清洁解决方案,这种权衡可能是值得的。