assumendo una società può avere più indirizzi (che sto assumendo a causa della vostra namespacing company.address.city, e perché rende per un esempio di query interessante):
class Group < ActiveRecord::Base
has_many :employees
end
class Employee < ActiveRecord::Base
belongs_to :group
belongs_to :company
end
class Company < ActiveRecord::Base
has_many :employees
has_many :addresses
end
class Address < ActiveRecord::Base
belongs_to :company
end
le query che stai cercando sarebbero i seguenti:
Employee.
joins(:group).
where(:groups => { :name => 'admin' })
Employee.
joins(:company => :addresses).
where(:addresses => { :city => 'Porto Alegre' })
nota che nelle clausole dove soprattutto la forma plurale dell'associazione è sempre utilizzato. Le chiavi nelle clausole where si riferiscono ai nomi delle tabelle, non al nome dell'associazione.
fonte
2012-03-25 05:08:00