我正在尝试创建一个搜索,其中单个记录必须在另一个表中包含多个记录(由 id 和has_many
语句链接)才能包含在结果中。
我有桌子users
,,,skill_lists
。skill_maps
用户通过表中的单个条目映射到个人技能skill_maps
。许多用户可以共享一个技能,单个用户可以通过表格中的多个条目拥有许多技能skill_maps
。
例如
User_id | Skill_list_id
2 | 9
2 | 15
3 | 9
用户 2 有技能 9 和 15
用户 3 只有技能 9
我正在尝试创建一个搜索,该搜索返回具有一组技能的所有用户的哈希值。所需的集合skill_ids
在参数中显示为数组。
这是我正在使用的代码:
skill_selection_user_ids = SkillMap.find_all_by_skill_list_id(params[:skill_ids]).map(&:user_id)
@results = User.find(:all, :conditions => {:id => skill_selection_user_ids})
问题是这会返回所有拥有这些技能的所有用户,而不是拥有所有这些技能的用户。
此外,我的用户表链接到技能列表表:through => :skill_maps
,反之亦然,这样我就可以调用@user.skill_list
等...
我确定这是一个真正的新手问题,我对 Rails(和编程)完全陌生。我搜索并寻找解决方案,但找不到任何东西。我真的不知道如何用一个搜索词来解释这个问题。