일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- nico
- Flutter
- 単語
- 一日一つメソッド
- 자바
- 디지몬
- Spring
- 비즈니스일본어
- 반다이몰
- メソッド
- DART
- javascript
- 일본어
- jsp
- Web
- java
- rails7
- rails
- C로 시작하는 컴퓨터 프로그래밍4판
- CSS
- springboot
- Python
- vscode
- 건담베이스
- 日本語
- 인프런
- ruby
- 건담
- html
- 연습문제
Archives
- Today
- Total
AR삽질러
Rails 一日一つメソッド (Day41) Associations_has_and_belongs_to_many 본문
Ruby/RubyOnRails-日本語
Rails 一日一つメソッド (Day41) Associations_has_and_belongs_to_many
아랑팡팡 2024. 2. 26. 19:21728x90
Rails 一日一つメソッド (Day41) Associations_has_and_belongs_to_many
1. has_and_belongs_to_manyとは
- 二つのモデルの多対多 (many-to-many)関係を設定する時に使う RailsのActiveRecordメソッド。
- 二つのモデルの間を join tableで関係を定義し、複数のインスタンスとの関連を持つ事ができる。
2. 多対多の関連
- 多対多関係を設定するには join tableが必要になる。
例)Bookモデルと Authorモデル
- 一つの本は、複数の Authorを持つ事ができる。
- Authorは、複数の本を持つ事ができる。
この時に、books_authors join tableが使われる。
1) Model定義
- 二つのモデルに has_and_belongs_to_manyメソッドで関係を定義する。
class Book < ApplicationRecord
has_and_belongs_to_many :authors
end
class Author < ApplicationRecord
has_and_belongs_to_many :books
end
2) joinMigration
- books_authors join tableを生成する(book_id, author_id )の外来キーを含む。
class CreateBooksAuthorsJoinTable < ActiveRecord::Migration[7.1]
def change
create_table :books_authors, id: false do |t|
t.references :book
t.references :author
end
end
end
rails c
book = Book.find(1)
author = Author.find(1)
book.authors << author
book.autors.delete(author)
多対多の関連を宣言で、bookモデルと Authorモデルのインスタンスを探したり、複雑なクエリを実行するときに有用に使用できる。
728x90
반응형
LIST
'Ruby > RubyOnRails-日本語' 카테고리의 다른 글
Rails 一日一つメソッド (Day43) Active Record(1) (0) | 2024.02.28 |
---|---|
Rails 一日一つメソッド (Day42) Active Storage - has_many_attached (0) | 2024.02.27 |
Rails 一日一つメソッド (Day40) RANDOM() (0) | 2024.02.23 |
Rails 一日一つメソッド (Day39) paramsメソッド (0) | 2024.02.22 |
Rails 一日一つメソッド (Day38) member, collectionメソッド (0) | 2024.02.21 |