Ruby on rails控制器&意见

时间:2012-01-11 14:19:05

标签: ruby-on-rails ruby model-view-controller scaffold

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

任何帮助都会非常感激。

1 个答案:

答案 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

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