2012-01-11 5 views
0

저는 Ruby on Rails에 익숙하지 않고 약간의 프로젝트를 통해 그와 관련된 정보를 얻습니다. 이 프로젝트는 사람이 직업을 게시 할 수있는 단순한 기본 작업 보드입니다. 나는 또한 사용자에게 기술 섹션을 갖기를 원합니다. 나는 세션과 함께 사용자를 생성하고 사용자가 작업을 게시하고 자신의 요법을 편집 할 수 있도록 작성된 작업을 가져 왔습니다. 이제는 사용자가 자신과 관련된 기술을 추가하길 원합니다. 나는 사용자보기에서 사용자 프로필을 볼 때 자신의 기술을 표시 할 때이 점을 어떻게 달성 할 수 있는지 혼란 스럽습니다. 나는 기술에 대한 새로운 비계를 만들고 관계 사용자 has_many 기술 요법을 만들 필요가 있다고 가정합니다. 오른쪽 라인을 따라 가니? 또한 어떻게 기술을 사용자 프로필에 표시 할 수 있습니까?Ruby on rails 컨트롤러 및 뷰

도움이 될 것입니다.

답변

1

당신은 확실히 올바른 길을 가고 있습니다. 당신이 그것을하기 위해 필요한 것은 스킬 모델/스카 폴드가 일반 필드 외에도 integer 타입의 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라는 중간에 테이블 이름의 복수형이 없습니다. 즉,와 같은 저장된 기술 집합을 가질 수 있음을 의미합니다.

  • 마케팅 능력

  • 그리고 여러 사용자에게 하나 개의 기술 기록을 연결 프로그래밍

    • 수학
    • 컴퓨팅
    • . (가) 사이에 모델을 결합 참조 할 필요없이

      @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 
      

      두 has_many 선언을 가진 두 모델 모두 기본적으로 당신은 여전히 ​​같은 것들을 사용할 수 있습니다.