这个问题之前似乎已被多次提出,但我没有在任何地方看到令人满意的答案。
我有三个表/模型:
skill
----------------------------------
id
label
user
----------------------------------
id
username
(many other irrelevant attributes)
user_skill
----------------------------------
id
user_id
skill_id
current_proficiency_level
interest_level
所以每个用户都有各种技能,每个用户现在可以表明他对这项技能的熟练程度(也许我是PHP的2)然后你的兴趣水平是什么(但也许我想学习PHP,所以我的兴趣水平是8)。
我想知道保存这些UserSkill
记录的最简单,“最默认”的方法是什么。
现在我们不担心我的User
对象获取UserSkill
记录的格式。让我们假设我有一些用户,我想在保存UserSkill
对象时保存10 User
条记录。我该怎么做?
(顺便说一下,我总体上对Rails非常熟悉,我还没有费心去找出做出这种保存的“正确”方法。所以如果你引用其他Rails术语/练习,我可能知道你在说什么。)
答案 0 :(得分:0)
通常,如果要操作连接表,则使用has_many :through
。
在任何一种情况下,您都会以相同的方式向用户添加技能:@user.skills << a_skill_object
或@user.skills = array_of_skill_objects
(这会删除已与@user
相关联的所有技能。)
可以在建立关联后手动设置连接表上的属性:@user.user_skills.first.current_proficiency_level = 42
答案 1 :(得分:0)
我最终做了@user.user_skills = (values)
。