ActiveRecord :: Relation.last结果不一致

时间:2012-08-28 17:16:47

标签: ruby-on-rails-3 activerecord

我有一个订阅应用程序,其中包含Users,Orders和DeliverySchedules(以及其他使用has_many的模型:通过必要而不是has_many)。

class User < ActiveRecord::Base
    has_many :orders
    has_many :deliveryschedules, :through => :orders

class Deliveryschedule < ActiveRecord::Base
    has_many :orders
    has_many :users, :through => :orders

class Order < ActiveRecord::Base
    belongs_to :user
    belongs_to :deliveryschedule

我的问题是,为什么

@allusers.each do |t|
    User.find_by_id(t.id).deliveryschedules.last.delivery_date
end

返回与

不同的内容
@allusers.each do |t|
    t.deliveryschedules.last.delivery_date
end

我的应用程序正在运行,但我觉得我错过了一些基本的东西,我无法在文档中找到它。

1 个答案:

答案 0 :(得分:0)

这是正常的数据库行为。除非您专门使用ORDER BY,否则从数据库返回的记录顺序是不确定的。因此,两个不同的查询可能会以不同的顺序返回行。