我在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
现在我想通过其车站地址街道订购所有设备。有没有办法做这个深度合并?
答案 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
方法。