2012-08-06 34 views
0

這個問題似乎之前已經問過很多次了,但我沒有看到它滿意地回答任何地方。保存has_many,:通過關聯表中的連接時,在連接表中有額外的屬性

我有三個表/型號:

skill 
---------------------------------- 
id 
label 


user 
---------------------------------- 
id 
username 
(many other irrelevant attributes) 


user_skill 
---------------------------------- 
id 
user_id 
skill_id 
current_proficiency_level 
interest_level 

所以每個用戶擁有任意數量的技能,並且每個用戶都可以表明他是有此技能現在怎麼精通(也許我是一個2 PHP ),然後你的興趣水平是什麼(但也許我想學習PHP,所以我的興趣水平是8)。

我想知道保存這些UserSkill記錄的最簡單的「最默認」方式是什麼。

我們現在不用擔心我的User對象獲取UserSkill記錄的格式。我們假設我有一些用戶,並且當我保存我的User對象時,我想保存10 UserSkill記錄。我會怎麼做? (順便說一下,我對Rails一般都很熟悉,我還沒有想過要找到「正確」的方式來做這種保存,所以如果你引用其他Rails術語/做法,我可能會知道你在說什麼。)

回答

0

我落得這樣做@user.user_skills = (values)

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

相關問題