你绝对是在正确的轨道上。你需要做的是设置技能模型/脚手架,除了它的常用字段之外,还有一个整数类型的 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
无需在两者之间引用连接模型。