2012-01-11 297 views
0

我是Ruby on Rails的新手,並且爲自己設定了一個小項目來掌握它。該項目很簡單,只是一個人可以發佈工作的基本工作板。我也想讓用戶有一個技能部分。我讓用戶與會話一起創建,並且還創建了作業,以便用戶可以發佈作業並僅編輯自己的作品。我現在希望用戶添加與自己相關的技能。對於在用戶視圖中查看用戶配置文件的方式,我很困惑,因爲它也會顯示他們的技能。我認爲我不需要爲技能創造一個新的腳手架,並創建一個關係用戶has_many技能等。這是正確的嗎?另外我怎樣才能獲得在用戶配置文件中顯示的技能。Ruby on rails控制器和視圖

任何幫助將非常感激。

回答

1

你絕對是在正確的軌道上。你需要做的是設置Skill模型/腳手架,除了通常的字段外,還有一個類型爲integer的user_id。這是存儲技能所屬用戶的外鍵。然後,您可以設置技能模型以與用戶建立belongs_to關聯。因此,在代碼中,你可以做這樣的事情:

@skill.user 
@user.skills 

從本質上講,一旦用戶連接到他們的技能,這是比較容易證明他們/user/1例如

<p><%= @user.name %> has the following skills</p> 
<ul> 
<% @user.skills.each do |skill| %> 
    <li><%= skill.title %></li> 
<% end %> 
</ul> 

我只是猜測在那裏的屬性名稱,但你明白了。

然而

要完全誠實的,我真的從許多攻擊這個很多方法。你有兩個獨立的模型,技能和用戶。然後你有一個叫SkillsUser(缺少表名的結尾複數)。這意味着您可以擁有一組保存的技能,例如。

  • 數學
  • 計算
  • 編程
  • 營銷技能

然後是一個技能記錄到多個用戶關聯。

class Skill < ActiveRecord::Base 
    has_many :skills_users 
    has_many :users, :through => :skill_users 

end 

class User < ActiveRecord::Base 
    has_many :skills_users 
    has_many :skills, :through => :skill_users 

end 

class SkillUser < ActiveRecord::Base 
    belongs_to :skill 
    belongs_to :user 
end 

有兩個的has_many聲明這兩款機型基本上可以讓你仍然使用了諸如:

@user.skills 
@skill.users 

而不必引用的之間的連接模式。