2009-09-29 6 views
0

Предположим, у меня есть Company, у которого много Employees, и у каждого Employee может быть много Companies.Как управлять отношениями n: n с Rails?

В основном у меня будет:

class Employee < ActiveRecord::Base 
    has_and_belongs_to_many :companies 
end 

и

class Company < ActiveRecord::Base 
    has_and_belongs_to_many :employees 
end 

Но тогда я запутался о том, как я мог бы получить такие вещи, как:

  • всех сотрудников компании с именем, начинающимся «John»
  • Все сотрудники ac ompany заказ по имени сначала, электронная почта вторая.

Есть ли какая-то магия, о которой я не знаю? Пример только здесь для демонстрации, не стесняйтесь делать предположения или изменять его, если это поможет вам лучше объяснить.

ответ

4

Для получения всех сотрудников, начиная с «John», вы можете сделать (конечно, есть много других способов сделать это, но в любом случае):

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

Для заказа сотрудников это даже похорошел:

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

С ActiveRecord вы можете сделать намного больше. Я предлагаю вам попробовать прочитать на http://guides.rubyonrails.org/ или посмотреть http://railscasts.com/, чтобы узнать больше о красоте RoR =)

Надеюсь, это поможет!

+0

О, это действительно хорошая новость! Я люблю это, очень элегантно :) – marcgg