활성 레코드 연결(일대다)

4416 단어 beginnersruby
부트캠프 3단계를 이미 끝냈다고 생각하니 정신이 없네요. 시간이 날고있다! 이 단계에서 우리는 마침내 소프트웨어 엔지니어링의 백엔드로 모험을 떠났고 여기서 Ruby on Rails와 "내부적으로"일어나는 일에 대해 조금 배웠습니다.
이 블로그에서는 협회에 대해 간단히 살펴보기로 했습니다.

왜 협회인가?



연관 선언은 두 개의 활성 레코드 모델을 연결하는 편리한 방법입니다. 이렇게 하면 데이터 모델을 논리적으로 조작할 수 있습니다.

2개의 별도 모델이 있는 경우 마이그레이션 폴더의 외래 키를 사용하여 함께 가져올 수 있습니다.
여기서 우리는 사용자의 외래 키를 촛불의 테이블에 저장하고 있습니다. 초는 사용자에게 속하기 때문에 어느 사용자에게 속하는지 식별할 수 있는 "user_id"가 있어야 합니다.

ActiveRecord::Schema.define(version: 2022_08_15_211950) do

  create_table "users", force: :cascade do |t|
    t.string "name"
  end

  create_table "candles", force: :cascade do |t|
    t.string "scent"
    t.string "brand"
    t.integer "user_id"
  end

end



그러나 이것이 작동하려면 활성 레코드 내에서 이들을 함께 묶고 관계를 발전시키는 특별한 매크로가 필요합니다. 이를 일대다라고 합니다.

매크로란 무엇입니까?



매크로는 우리를 위해 코드를 작성하는 방법입니다. attr_reader 및 attr_accessor와 같은 매크로에 익숙하다면 Active Record에는 클래스와 함께 사용할 수 있는 새로운 인스턴스 메서드를 생성하는 몇 가지 편리한 매크로가 함께 제공됩니다.
  • 사용자 모델에서는 사용자has_many가 촛불을 든다고 생각해야 합니다. "candles"라는 이름은 단일 사용자가 많은 양초를 가질 수 있기 때문에 복수형이어야 합니다.
  • 양초 모델에서 양초belong_to는 사용자입니다. candles on이 한 사용자에게 속하기 때문에 "user"가 단수로 쓰여진 것을 알 수 있습니다.

  • # has_many
    
    # app/models/user.rb
    class User < ActiveRecord::Base
      has_many :candles
    
      # naming is plural
      # indicates a one-to-many association
      # a user can have many candles in this example
      # candles associated via `user_id`
    end
    
    



    # belongs_to
    
    # app/models/candle.rb
    class Candle < ActiveRecord::Base
      belongs_to :user
    
      # must be singular
      # Sets up a 1:1 connection with another model - User in this case
      # Books associated to a user via `user_id` on candles table
    end
    


    실행rake db:migrate하고 씨앗을 심은 후에만 실행rake console하여 모두 제대로 연결되었는지 확인할 수 있습니다.



    출처:
  • "액티브 레코드 연결."Ruby on Rails 가이드, https://guides.rubyonrails.org/association_basics.html#the-types-of-associations .
  • "집."플랫아이언 학교, 2022년 5월 9일, https://flatironschool.com/ .
  • 좋은 웹페이지 즐겨찾기