0

这个问题之前好像被问过很多次了,但是我没有看到任何地方都得到了满意的回答。

我有三个表/模型:

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 术语/实践,我'可能会知道你在说什么。)

4

2 回答 2

0

通常,has_many :through如果要操作连接表,则使用。

参见这里,例如: http: //guides.rubyonrails.org/association_basics.html#choosing-between-has_many-through-and-has_and_belongs_to_many

在任何一种情况下,您都将以相同的方式将技能添加到用户:@user.skills << a_skill_object@user.skills = array_of_skill_objects(这将删除已与 关联的任何技能@user)。

建立关联后,可以手动设置连接表上的属性:@user.user_skills.first.current_proficiency_level = 42

于 2012-08-06T20:37:54.103 回答
0

我最终做了@user.user_skills = (values)

于 2012-08-07T20:16:18.167 回答