has_many: путают ассоциации - PullRequest
       26

has_many: путают ассоциации

0 голосов
/ 06 декабря 2011

Я новичок в ruby ​​на рельсах и застрял в ассоциациях.

Я хочу разработать веб-приложение, в котором участник может создать контакт. Контакт может иметь одну или несколько категорий (пекарь / актер / разработчик / что угодно).

Исходя из этого, я знаю, что мне нужно как минимум три модели: член, контакт и категории. Я также создал модель category_contacts.

Вот мои ассоциации моделей:

class Member < ActiveRecord::Base
   has_many :contacts
end

class Contact < ActiveRecord::Base
   belongs_to :member
   has_many :categories_contacts
   has_many :categories, :through => :categories_contacts
end



   class Category < ActiveRecord::Base
      has_many :categories_contacts
      has_many :contacts, :through => :categories_contacts
   end




 class CategoriesContacts < ActiveRecord::Base
     belongs_to :contact
     belongs_to :category
  end

Это нормально?

А потом я хотел бы получить все контакты по категориям.

Пример:

Категории: актеры, режиссеры

Контакт 1: имя (Джон), категории (актеры, режиссеры)

Контакт 2: имя (Зак), категория (актеры)

Контакт 3: имя (Удача), категория (директора)

Если бы я сортировал по актерам, я бы получил

Категория: Актеры =>

Контакт 1: имя (Джон)

Контакт 2: имя (Зак)

Но я не знаю, как получить все мои контакты в моем контроллере. Я пробовал вещи, но ничего не работает.

Спасибо за помощь.

1 Ответ

0 голосов
/ 06 декабря 2011

Ваша настройка, кажется, в порядке.

Попробуйте это:

Contact.joins(:categories).where("categories.id in ?", params[:category_ids]).all

Если вы хотите отсортировать:

Contact.joins(:categories).where("categories.id in ?", params[:category_ids]).order("contacts.name ASC")
...