User 모델과 Micropost 모델의 연관성

Ruby on Rails 자습서의 13 장에서 서로 다른 두 모델(데이터) 간의 연관성 정보
해설과 이해를 깊이 있게 하기 위해 출력하다.

마이크로소프트 모델의 생성


rails 명령을 사용하여 User 모델(사전 생성)과 연관된 Microsoft 모델을 생성합니다.
$ rails generate model Micropost content:text user:references
위의 명령에 따라 Application Record를 상속받은 모델을 작성합니다.
※ 이때, User 시계를 만들 때와 마찬가지로 마이크로포스터 시계를 만들기 위해
마이그레이션 파일도 자동으로 생성됩니다.
 
user:references는 파라미터를 포함하고 명령을 실행한 후
사용자와의 일대일 관계를 나타내는 belongsto 코드
Microsoft 모델의 파일에 추가됩니다.
app/models/micropost.rb
class Micropost < ApplicationRecord
   belongs_to :user # この行が追記される。
end
 
또한 자동으로 생성된 Micropost 모델의 마이그레이션 파일에서
색인 및 외부 키워드 참조 사용자ID 표시줄 추가, User 및 Micropost
관련 준비를 하다.
db/migrate/[timestamp]_create_microposts.rb
class CreateMicroposts < ActiveRecord::Migration[5.0]
  def change
    create_table :microposts do |t|
      t.text :content
      t.references :user, foreign_key: true

      t.timestamps
    end
    add_index :microposts, [:user_id, :created_at] # ここの行!
  end
end
※user_id와createdat의 양쪽을 하나의 배열에 포함시키는 것도 주의해야 한다.
이렇게 하면 Active Record는 두 키를 동시에 처리하는 복합 키 인덱스입니다.
(Multiple Key 인덱스).(복합 키 인덱스의 이해는 훗날.)  
 
먼저 실행된 rails 명령을 통해 다음 표를 만듭니다.

User 테이블과 Micropost 테이블의 연관성


Micropost 테이블을 만들 때 파일에 추가된 belongsto와
app/models/micropost.rb
class Micropost < ApplicationRecord
   belongs_to :user # この行。
end
User 테이블의 파일에서has수동 보충 many
app/models/user.rb
class User < ApplicationRecord
  has_many :microposts
  .
  .
  .
end
따라서 아래의 방법은 rails에서 사용할 수 있다.
메서드
용도
micropost.user
Microsoft에 연결된 User 객체로 돌아가기
user.microposts
User 마이크로폰 모음으로 돌아가기
user.microposts.create(arg)
사용자와 관련된 마이크로 메일박스 만들기
user.microposts.create!(arg)
사용자 관련 메일박스 만들기 (실패 시 예외 발생)
user.microposts.build(arg)
사용자와 연결된 새 Micropost 객체 반환
user.microposts.find_by(id: 1)
user에 연결하여 id가 1인 메일박스를 검색합니다
이 방법을 사용하면 링크를 통해 사용자가
마이크로폰 제작 가능.
예제)
rails 컨트롤러에서
user = User.find(1)
micropost = user.microposts.build(content:"hoge")
# micropost変数のuser_idには、関連するユーザーのid(この場合はid:1)が自動的に設定される。

좋은 웹페이지 즐겨찾기