Como gerir N: N relações com Rails?
-
18-09-2019 - |
Pergunta
Vamos dizer que tenho um Company
que tem muitos Employees
e cada Employee
pode ter muitos Companies
.
Basicamente eu vou ter:
class Employee < ActiveRecord::Base
has_and_belongs_to_many :companies
end
e
class Company < ActiveRecord::Base
has_and_belongs_to_many :employees
end
Mas então eu estou confuso sobre como eu poderia fazer as coisas como:
- Todos os empregados de uma empresa com o nome começando por "John"
- Todos os empregados de uma ordem empresa por nome em primeiro lugar, e-mail segundo.
Existe alguma magia Eu não sei sobre? O exemplo é apenas aqui para o demo, fique à vontade para fazer suposições ou alterá-lo se ele ajuda a explicar melhor.
Solução
Para obter todos os funcionários que começam com "John", que você pode fazer (é claro que existem muitas outras maneiras de fazer isso, mas de qualquer maneira):
some_company.employees.find(:all, :conditions => "name LIKE 'John%'")
Para ordenação dos funcionários é ainda mais bonita:
class Company < ActiveRecord::Base
has_and_belongs_to_many :employees, :order => "name, email"
end
Há muito mais você pode fazer com ActiveRecord. Eu sugiro que você tente ler-se na http://guides.rubyonrails.org/ ou relógio http://railscasts.com/ para saber mais sobre a beleza de RoR =)
Espero que ajude!