2013-08-22 4 views
0

처음으로 활성 레코드 연결을 만들고 있는데 추가 한 후에 무엇을 기대해야하는지 알고 싶습니다. 응용 프로그램이 사용자에 속하기 때문에 나는 레일 3.2.14ActiveRecord 모델에서 연결을 추가 할 경우의 이점은 무엇입니까?

내가 3 개 테이블 사용자, 응용 프로그램 및 내가 외래 키 컬럼으로 USER_ID 및 작업 ID를 추가 한 응용 프로그램 테이블에서 채용

1]이 사용하고 및 일.

2] 나는 또한 필요한 연관성을 추가했습니다.

3] 외래 키 열과 연관을 추가 한 후 rake db : migrate를 실행하거나 관계형 모델링을 완료하기 위해 다른 작업을 수행해야합니까?

내가 작업 링크를 클릭 한 후 새 응용 프로그램을 만들 때, 나는 작업 ID와 USER_ID가 자동적으로 응용 프로그램의 프레임 워크에 의해 채워 것이라고 기대했다 일부 문맥 이제

: 그것은

을 수행한다 방법을 만들 수

그러나 external_key 열이 프레임 워크에 의해 채워지지 않은 것처럼 보입니다. create 메소드에서 해당 job_id와 user_id를 수동으로 추출하여 응용 프로그램에 채워야합니다.

연관을 추가하지 않는 한 가지 장점은 나중에 관계가 has_many 대신에 has_and_belong_to_many 인 것을 깨닫는 것입니다. 연관성이 그 지점에서 '고정'되어 있지 않기 때문에 테이블에서 처리 할 수 ​​있습니다.

나는 다음과 같은 질문이 : 모델의 연관을 정의의 이익이 무엇

1]. 방금 외래 키 열을 추가하고 모델에서 연관시키지 않고 처리 할 수있었습니다.

2] 모델에 연관성을 추가하여 (내 인생을 더욱 쉽게 만들어 줄 수있는) 다른 것들은 무엇입니까?

여기 모델은 다음과 같습니다 이 동영상에 대한 링크를 제공 자유롭게

Models: 
    class User < ActiveRecord::Base 
     rolify 
     # Include default devise modules. Others available are: 
     # :token_authenticatable, :confirmable, 
     # :lockable, :timeoutable and :omniauthable 
     devise :database_authenticatable, :registerable, 
      :recoverable, :rememberable, :trackable, :validatable 

     # Setup accessible (or protected) attributes for your model 
     attr_accessible :role_ids, :as => :admin 
     attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :user_id 
     validates_presence_of :email 

    end 


    class Job < ActiveRecord::Base 
     attr_accessible :company, :desc, :location, :application_id, :applicant_id 

     belongs_to :recruiters, :class_name => "User" 
     has_many :applications 
     has_many :applicants,:class_name => "User", through: :applications 
    end 

    class Application < ActiveRecord::Base 
     attr_accessible :applicant_email, :applicant_name, :recruiter_id, :applicant_id, :user_id 


     belongs_to :jobs 
     belongs_to :applicants, :class_name => "User" 
    end 

주, 이러한 일들이 간단하게 설명 주석 섹션의 블로그. 나는 모든 단계를 이해하는 데 도움이되는 공식 문서를 찾지 못했습니다. 찾을 수있는 관련 레일스 캐스트가 없습니다.

답변

0

1) 일반적인 작업을 코드에서 더 쉽고 간단하게 만들었 기 때문에 1). 본질적으로 액티브 레코드 패턴. 이 코드가 이미 내장되어있을 때 쿼리 등을 직접 처리하는 코드를 작성하는 이유는 코드를 상당히 줄여주고 쿼리를 훨씬 쉽게 읽을 수있게 만드는 이유입니다. 2) 이것은 너무 광범위하므로 대답하지 않습니다.

+0

답변 해 주셔서 감사합니다. 연관성이 더 쉬운 쿼리를 작성하는 예제를 줄 수 있습니까? 또한 일반적인 작업이 더 간단 해 집니까? – codeObserver