'has_many'에 대한 ActiveRecord 연결 소개
3527 단어 backendactiverecordrubybeginners
has_many
에 대해 이야기해 보겠습니다.Has_many
는 ActiveRecord가 제공하는 6가지 유형의 연관(또는 "매크로 메소드") 중 하나입니다.has_many
연결은 has_one
와 유사하지만 다른 모델과의 일대다 연결을 나타냅니다. belongs_to
연결의 "다른 쪽"에서 이 연결을 종종 찾을 수 있습니다. 이 연결은 모델의 각 인스턴스에 다른 모델의 인스턴스가 0개 이상 있음을 나타냅니다. has_many
연결을 사용하면 모델has_many
이 무엇이든 복수형인지 항상 확인하고 싶을 것입니다. 예를 들어, 어린이와 어린이의 장난감을 포함하는 애플리케이션에서 어린이 모델은 다음과 같이 선언될 수 있습니다.class Child < ApplicationRecord
has_many :toys
end
has_many :through
연관은 종종 다른 모델과 다대다 연결을 설정하는 데 사용됩니다. 이 연관은 선언 모델이 세 번째 모델을 통해 진행하여 다른 모델의 0개 이상의 인스턴스와 일치될 수 있음을 나타냅니다. 또한 has_many :through
연결을 사용하면 모델has_many
이 복수형인지 확인해야 합니다. 예를 들어 게임에 리뷰가 있고 리뷰를 작성할 수 있는 사용자가 있다고 가정합니다. 관련된 다대다 연결 선언은 다음과 같을 수 있습니다.class Game < ApplicationRecord
has_many :reviews
has_many :users, through: :reviews
end
class Review < ApplicationRecord
belongs_to :game
belongs_to :user
end
class User < ApplicationRecord
has_many :reviews
has_many :games, through: :reviews
end
자, 이제
has_many
테이블 연결의 기본 설정이 완료되었으므로 자동 생성되는 항목에 대해 알아보겠습니다. 아래 목록을 보십시오.others
others=(other,other,...)
other_ids
other_ids=(id,id,...)
others<<
others.push
others.concat
others.build(attributes={})
others.create(attributes={})
others.create!(attributes={})
others.size
others.length
others.count
others.sum(*args)
others.empty?
others.clear
others.delete(other,other,...)
others.delete_all
others.destroy(other,other,...)
others.destroy_all
others.find(*args)
others.exists?
others.distinct
others.reset
others.reload
이러한 자동 생성 방법은 데이터베이스를 쿼리할 때 많은 시간을 절약할 수 있고 또 절약할 것입니다.
다음은
has_many
가 할 수 있는 또 다른 멋진 일입니다. 연관이 Relation 개체에서 구축되기 때문에 다음과 같이 쿼리에 조건을 추가할 수 있습니다.class Blog < ActiveRecord::Base
has_many :published_posts, -> { where(published: true) }, class_name: 'Post'
end
'Association Methods'의 기능에 대해 자세히 알아볼 수도 있습니다Here.
또한 다른 5개 연결에 대해 자세히 알아보려면 해당 연결 유형 및 사용 사례에 대한 자세한 문서 링크가 있습니다ActiveRecord.
결론적으로
has_many
는 많은 시간을 절약할 수 있는 매우 유용한 방법입니다. 저는 개인적으로 has_many
이 이미 말한 방법을 제공했다는 것을 모르고 많은 방법을 만들었습니다. 따라서 무슨 일이 일어나고 있는지 또는 그 방법이 당신을 위해 무엇을 하는지 궁금해하는 것이 좋습니다. '매크로' 방법으로 시간을 절약한 시간에 대해 아래 댓글에 게시하세요.
Reference
이 문제에 관하여('has_many'에 대한 ActiveRecord 연결 소개), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aarondski/activerecord-associations-intro-into-hasmany-m01텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)