Ruby on Rails深度订购

时间:2015-03-12 06:47:03

标签: ruby-on-rails ruby

我在Ruby on Rails中进行深度排序存在问题。我有以下协会。

class Device < ActiveRecord::Base
  belongs_to :station
end

class Station < ActiveRecord::Base
  has_one :address, dependent: :destroy
  has_many :devices
end

class Address < ActiveRecord::Base
  belongs_to :station

  validates :street, :suburb, :state, :postcode, :country, presence: true
end

现在我想通过其车站地址街道订购所有设备。有没有办法做这个深度合并?

1 个答案:

答案 0 :(得分:1)

是的,有办法。

鉴于Address模型表的名称为addresses,所有devices都有station,并且所有{{1}有一个stations,您可以使用以下内容:

address

以上Device. joins(station: :address). order("addresses.street ASC") # you can change ASC to DESC 适用于内部联接。万一有“失踪”的情况关联例如joins没有station,那么您需要使用外部联接,显式地使用原始SQL或使用address方法。