gpt4 book ai didi

mysql - Rails 4 + ActiveRecord : How to merge data from 2 models?

转载 作者:行者123 更新时间:2023-11-29 23:25:59 25 4
gpt4 key购买 nike

我有 2 个模型,我需要从它们加载数据,将加载的数据放入 oen 变量,然后迭代它(模型具有不同的属性) - 像这样:

cars = Car.order('created_at DESC').limit(10)
bikes = Bike.order('created_at DESC').limit(10)

@data = cars + bikes

然后在模型中,我想做这样的事情:

@data.order('created_at DESC).each do...

但问题是,像上面一行那样的排序不起作用。如何根据created_at列对两个模型中的数据进行排序?

最佳答案

第一个解决方案:

使用Rails STI(单表继承)。为了使用它,您需要创建名为 Vehicle 的新模型(和表),然后您可以调用 Vehicle.order('created_at DESC').limit(20).您的模型类将如下所示:

class Vehicle < ActiveRecord::Base; end
class Car < Vehicle; end
class Bike < Vehicle; end

第二种解决方案:

cars = Car.order('created_at DESC').limit(10)
bikes = Bike.order('created_at DESC').limit(10)
@data = (cars + bikes).sort_by{|vehicle| vehicle.created_at}.reverse

它不涉及对模型架构的任何更改,但需要服务器端进行额外的计算。

要迭代此类集合(如果这些模型不同):

@data.each do |vehicle|
if vehicle.respond_to?(:sold_at)
vehicle.sold_at
end
#...
end

关于mysql - Rails 4 + ActiveRecord : How to merge data from 2 models?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26962886/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com