我有这样的架构。
managers
has_many :emails
has_many :stores
emails
belongs_to :manager
stores
belongs_to :manager
belongs_to :region
regions
has_many :stores
has_many :readings
readings
belongs_to :regions
我想为经理获取读数。在 SQL 中,我会做这样的事情。
SELECT * FROM managers
JOIN stores ON stores.manager_id = managers.id
JOIN regions ON stores.region_id = regions.id
JOIN readings ON readings.region_number = regions.number
WHERE
manager.name = 'John Smith'
AND
regions.number = '1234567'
LIMIT 100
我无法弄清楚如何在 activerecord 中执行此操作。我一直在尝试理解http://guides.rubyonrails.org/active_record_querying.html和http://guides.rubyonrails.org/association_basics.html但它并没有陷入困境。我想我只需要从不同的观点。
我在想我会像这样访问数据,但我想我只是不明白它是如何工作的。
managers.name
managers.stores.name
managers.stores.regions.readings.limit(10)
我一直不得不做这样的事情,这更丑陋。
managers.first.stores.first.regions.first.readings.limit(10)