0

我是 Ruby on Rails 的新手,并为自己设置了一个小项目来掌握它。该项目很简单,只是一个基本的工作板,人们可以在其中发布工作。我也想让用户有一个技能部分。我让用户与会话一起创建,并且还创建了工作,因此用户可以发布工作并且只编辑他们自己的等。我现在希望用户添加与自己相关的技能。在用户视图中查看用户个人资料时,我对如何实现这一点感到困惑,它也会显示他们的技能。我假设我不需要为该技能创建一个新的脚手架并创建一个关系用户 has_many 技能等。这是正确的路线吗?另外,我如何才能获得在用户个人资料中显示的技能。

任何帮助将非常感激。

4

1 回答 1

1

你绝对是在正确的轨道上。你需要做的是设置技能模型/脚手架,除了它的常用字段之外,还有一个整数类型的 user_id。这是存储该技能的用户的外键。然后你可以设置 Skill 模型与用户有一个 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

无需在两者之间引用连接模型。

于 2012-01-11T14:46:56.917 回答