如何查询rails中的多个表?

时间:2016-11-04 10:08:03

标签: ruby-on-rails join

我有三个型号。他们就像下面

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。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以通过Shop描述AddressUser的关系。像这样:

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

然后你可以发出一个简单的电话:

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