我有一个包含联系人的表,一个包含事件的表,以及一个包含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
答案 0 :(得分:0)
这是一种方法,但实际上您正在查看has_and_belongs_to_many
关联(guide here)。我们的想法是,当您执行@contact = Contact.find(params[:contact_id])
时,它会自动提取所有关联的Contacts_Events
以及一个查询。