0

この質問は以前に何度も出されたようですが、満足のいく回答がどこにもありませんでした。

私は3つのテーブル/モデルを持っています:

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

私はやることになりました@user.user_skills = (values)

于 2012-08-07T20:16:18.167 に答える
0

通常、has_many :through結合テーブルを操作する場合に使用されます。

たとえば、ここを参照してください。

いずれの場合も、同じ方法でユーザーにスキルを追加します:@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 に答える