2012-01-11 12 views
0

私はRuby on Railsの新機能で、それを把握するための小さなプロジェクトを設定しました。このプロジェクトは、人が仕事を投稿することができる単純な基本的な仕事のボードです。私はまた、ユーザーにスキルセクションを持ってもらいたい。私はセッションと共に作成されたユーザーを持っていて、ジョブを作成してユーザーがジョブを投稿し、自分のectだけを編集できるようにしました。私は今、ユーザーが自分自身に関連するスキルを追加したいと思っています。私はユーザービューでユーザープロファイルを表示するときにどのようにこれを達成できるのか混乱しています。また、ユーザーのスキルも表示されます。私はスキルのための新しい足場を作成し、関係のユーザーhas_manyスキルを作成する必要はないと思う。これは正しい線に沿っていますか?また、どのようにスキルをユーザーのプロファイルに表示することができます。Ruby on railsコントローラとビュー

本当にありがとうございます。

答えて

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> 

私は推測しているが、それらを表示するためには比較的簡単です:あなたのようなことを行うことができ、コード中のSOそこに属性名がありますが、あなたはその考えを得ます。

しかし

完全に正直に言うと、私は実際に多くの多くの方法論にこれを攻撃します。スキルとユーザーの2つのモデルがある場合。その間にSkillsUserという名前のテーブルがあります(テーブル名の終わりの複数形が欠けています)。これは、のような保存されたスキルのセットを持つことができることを意味します。

  • マーケティングのスキル

  • そして、複数のユーザーに1つのスキルレコードを関連付けるプログラミング

    • 数学
    • コンピュー
    • 。インクルードが間に結合モデルを参照することなく、

      @user.skills 
      @skill.users 
      

      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 
      

      2つのにhas_manyの宣言を持つ両モデルは、基本的には、あなたはまだのようなものを使用することができます。