我是Ruby on Rails的新手,并为自己设定了一个小项目来掌握它。该项目很简单,只是一个人可以发布工作的基本工作板。我也希望让用户拥有技能部分。我已经创建了与会话一起创建的用户,并且还创建了作业,因此用户可以发布作业并仅编辑他们自己的作业。我现在希望用户添加与自己相关的技能。我对如何在用户视图中查看用户配置文件方面实现这一点感到困惑,它还将展示他们的技能。我假设我需要为技能创建一个新的脚手架并创建一个用户has_many技能等关系。这是沿着正确的方向吗?另外,我如何才能获得在用户个人资料中显示的技能。
任何帮助都会非常感激。
答案 0 :(得分:1)
你肯定是在正确的轨道上。你需要做什么设置技能模型/脚手架除了通常的字段,还有一个整数类型的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
无需在两者之间引用连接模型。