0

我是 ruby​​ on rails 的新手,我被协会困住了。

我想开发一个网络应用程序,成员可以在其中创建联系人。一个联系人可以有一个或多个类别(贝克/演员/开发人员/任何东西)。

由此,我知道我至少需要三个模型:成员、联系人和类别。我还创建了模型 categories_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:姓名(Zack),类别(演员)

联系方式3:姓名(运气)、类别(导演)

如果我按演员排序,我会得到

类别:演员 =>

联系人 1:姓名(约翰)

联系人 2:姓名(Zack)

但我不知道如何在我的控制器中获取我的所有联系人。我尝试了一些东西,但没有任何效果。

感谢您的帮助。

4

1 回答 1

0

你的设置看起来不错。

试试看:

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")
于 2011-12-05T23:29:07.823 回答