2009-09-29 10 views
0

Disons que j'ai un Company qui a beaucoup Employees et chaque Employee peut avoir beaucoup Companies.Comment gérer les relations n: n avec Rails?

Fondamentalement, je devrai:

class Employee < ActiveRecord::Base 
    has_and_belongs_to_many :companies 
end 

et

class Company < ActiveRecord::Base 
    has_and_belongs_to_many :employees 
end 

Mais je suis confus au sujet de la façon dont je pourrais avoir des choses comme:

  • Tous les employés d'une entreprise avec le nom commençant par "John"
  • Tous les employés de ac Ordre d'entreprise par nom d'abord, email deuxième.

Y a-t-il de la magie que je ne connais pas? L'exemple est juste ici pour la démo, n'hésitez pas à faire des suppositions ou à le changer si cela vous aide à mieux expliquer.

Répondre

4

Pour obtenir tous les employés commençant par « John », vous pouvez le faire (bien sûr, il y a beaucoup d'autres façons de le faire, mais de toute façon):

some_company.employees.find(:all, :conditions => "name LIKE 'John%'") 

Pour commander des employés, il est encore plus jolie:

class Company < ActiveRecord::Base 
    has_and_belongs_to_many :employees, :order => "name, email" 
end 

Vous pouvez faire beaucoup plus avec ActiveRecord. Je suggère que vous essayez de lire sur http://guides.rubyonrails.org/ ou regarder http://railscasts.com/ pour en savoir plus sur la beauté de RoR =)

Espérons que ça aide!

+0

Oh, c'est vraiment une bonne nouvelle! J'aime ça, très élégant :) – marcgg