suponiendo que una empresa puede tener varias direcciones (que estoy suponiendo que debido a su namespacing company.address.city, y porque hace que para una consulta de ejemplo interesante):
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
las consultas que está buscando serían los siguientes:
Employee.
joins(:group).
where(:groups => { :name => 'admin' })
Employee.
joins(:company => :addresses).
where(:addresses => { :city => 'Porto Alegre' })
nota de que en las cláusulas anteriores donde la forma plural de la asociación se utiliza siempre. Las claves en las cláusulas where se refieren a los nombres de las tablas, no al nombre de la asociación.