我是铁杆上的红宝石新手,而且我一直坚持使用协会。
我想开发一个网络应用,会员可以在其中创建联系人。联系人可以有一个或多个类别(Baker / Actor / Developer / anything)。
据此,我知道我至少需要三种模式:成员,联系人和类别。 我还创建了模型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:姓名(扎克),类别(演员)
联系人3:姓名(运气),类别(董事)
如果我按演员排序,我会得到
分类:演员=&gt;
联络1:姓名(约翰)
联系人2:姓名(扎克)
但我不知道如何在我的控制器中获取所有联系人。 我尝试了一些但没有任何作用。
感谢您的帮助。
答案 0 :(得分: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")