활성 레코드 연결 확인

8409 단어 rubyrails
이 블로그는 활성 레코드 연결에 대한 간략한 개요와 연결이 제대로 작동하는지 확인하는 방법입니다.

레일즈란?



Rails is a web application development framework written in the Ruby programming language. It is designed to make programming web applications easier by making assumptions about what every developer needs to get started. It allows you to write less code while accomplishing more than many other languages and frameworks. [https://guides.rubyonrails.org/getting_started.html]



웹 프레임워크는 애플리케이션에 구조를 제공하고 구성 세부 정보보다는 기능에 집중할 수 있도록 합니다.

활성 레코드 연결이란 무엇입니까?



연결을 이해하려면 먼저 Active Record를 살펴봐야 합니다.

활성 레코드



Active Record facilitates the creation and use of business objects whose data requires persistent storage to a database. https://guides.rubyonrails.org/active_record_basics.html



활성 레코드 개체는 데이터베이스에 저장될 키-값 쌍이 있는 해시입니다.

다음은 User 모델이 생성되는 방법의 예입니다.

rails g resource user name:string age:integer

스키마 파일을 보면 저장된 데이터(키-값 쌍)를 볼 수 있습니다.

# ../db/schema.rb

create_table "users", force: :cascade do |t|
    t.string "name"
    t.integer "age"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

이제 이름과 나이로 사용자를 만들 수 있습니다. 레일 콘솔을 입력하여 이를 수행합니다.



위에 표시된 것처럼 이제 이름이 문자열 "Pharia"이고 나이가 정수 27인 사용자 인스턴스가 있습니다.

그러나 사용자의 애완 동물을 보관해야 하는 경우에는 어떻게 해야 합니까?

동물 이름 문자열이 있는 "pet"키를 가질 수 있습니다.

create_table "users", force: :cascade do |t|
    t.string "name"
    t.integer "age"
    t.string "pet" # new key to store pet
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

그러나 이것은 애완 동물이 자신의 속성을 가지고 있는 경우를 설명하지 않습니다.

또한 사용자가 애완동물을 여러 마리 키우는 경우에는 어떻게 됩니까?

이것은 활성 레코드 연결이 함께 제공되는 곳입니다.

활성 레코드 연결



In Rails, an association is a connection between two Active Record models. Why do we need associations between models? Because they make common operations simpler and easier in your code.
https://guides.rubyonrails.org/association_basics.html



User 모델에 애완 동물 속성을 추가하는 대신. 대신 Pet의 새로운 Active Record 모델을 생성합니다.

rails g resource pet name:string sex:string user_id:integer

이 모델에서 중요한 키는 user_id입니다. 이를 통해 애완 동물이 속한 사용자를 알 수 있기 때문입니다. 외래 키입니다.

create_table "pets", force: :cascade do |t|
    t.string "name"
    t.string "sex"
    t.integer "user_id"
    t.datetime "created_at", precision: 6, null: false
    t.datetime "updated_at", precision: 6, null: false
  end

이제 이 관계를 설명하기 위해 모델을 업데이트합니다.

class User < ApplicationRecord
    has_many :pets
end



class Pet < ApplicationRecord
    belongs_to :user
end

연결 확인



연결을 선언하면 선언 클래스는 연결과 관련된 메서드를 얻습니다.

먼저 연결이 작동하는지 확인하기 위해 collection.build(attributes = {}) 메서드를 활용합니다.

collection.build(attributes = {}) 메서드

연결이 작동하는지 확인하려면:
  • 사용자를 대상으로 지정하고 변수 u에 할당합니다.
  • u.pets.build(name: "Teddy", sex: "male")가 사용자에게 속한 애완 동물의 새 인스턴스를 인스턴스화합니다.


  • 사용자 개체를 한 번 더 저장합니다
  • .
  • 연결(u.pets)에 액세스하고 배열에 새 애완 동물 개체가 포함되어 있는지 확인합니다
  • .



    둘째, 연관 방법을 활용하겠습니다.

    연관 방법
  • 애완 동물을 대상으로 지정하고 변수 p에 할당
  • p.user를 통해 애완동물이 속한 사용자를 확인합니다.



  • 메서드가 올바른 데이터를 반환하고 있습니다. 협회가 작동합니다!

    결론



    활성 레코드 연결을 확인할 때 association.build(attributes = {}) & association과 같은 기본 제공 메서드를 사용하여 개체 관계가 예상대로 반환되는지 확인합니다.

    & 기억하세요... 즐거운 코딩하세요, 친구들! =)

    좋은 웹페이지 즐겨찾기