2016-11-04 5 views
0

Ich habe drei Modelle. Sie sind wie folgt:Wie kann man auf mehreren Tabellen in Schienen abfragen?

class User < ApplicationRecord 
    has_one :shop 
    has_one :address 
end 

class Shop < ApplicationRecord 
    belongs_to :user  
end 

class Address < ApplicationRecord 
    belongs_to :user  
end 

Das Adressmodell hat die Spalte "state_id". Jetzt möchte ich alle Geschäfte erhalten, die Shop-Besitzer address.state_id ist 123456.

Antwort

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

Sie können Beziehung von Shop und Address über User beschreiben. Wie folgt aus:

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

Dann können Sie einen einfachen Anruf erteilen:

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