如何查询rails中的多个表?

问题描述:

我有三种模式。它们如下所示如何查询rails中的多个表?

class User < ApplicationRecord 
    has_one :shop 
    has_one :address 
end 

class Shop < ApplicationRecord 
    belongs_to :user  
end 

class Address < ApplicationRecord 
    belongs_to :user  
end 

地址模型有state_id列。现在,我想所有的商店,其店的老板address.state_id为123456

Shop.joins(user: :address).where(addresses: { state_id: 123456 }) 

您可以通过User描述ShopAddress关系。就像这样:

# models/shop.rb 
class Shop < ApplicationRecord 
    belongs_to :user 
    has_one :address, through: :user 
end 

然后你就可以发出简单的呼叫:

Shop.includes(:address).where(addresses: { state_id: 123456 })