rails 3:使用多对多表中的ID来执行另一个查询

时间:2012-03-10 20:52:56

标签: ruby-on-rails-3

我有一个包含联系人的表,一个包含事件的表,以及一个包含contact_id和event_id的联接表,用于映射他们的多对多关系。

我是RoR的新手,我习惯于查询第一个表,构建一组ID并在id IN setofids的第二个表上运行查询。这也是它在RoR中的表现吗?

这是我到目前为止所拥有的:

def view
 @contact = Contact.find(params[:contact_id])
 @contactevents = Contacts_Event.where(:contact_id => params[:contact_id])

 s1 = Set.new 
@contactevents.each do |contactevent| 
  s1.add(contactevent.event_id)
end

 @contactevents_test = Event.where(:id => @s1)

end

1 个答案:

答案 0 :(得分:0)

这是一种方法,但实际上您正在查看has_and_belongs_to_many关联(guide here)。我们的想法是,当您执行@contact = Contact.find(params[:contact_id])时,它会自动提取所有关联的Contacts_Events以及一个查询。