Model-M:N relation
:์๋ฅผ๋ค์ด ํ๋ช ์ ํ์์ ๋ง์ ๊ณผ๋ชฉ์ ์๊ฐํ ์ ์๊ณ , ํ๋์ ๊ฐ์ข๋ ์ฌ๋ฌ๋ช ์ ํ์์ด ๋ค์ ์ ์์ต๋๋ค.
1. has_and_belongs_to_many Association
: assemblies_parts์ฒ๋ผ ํ์์ ์ธ ์ค๊ฐ ํ
์ด๋ธ์ ์ฌ์ฉํด ํํํ๋ ๊ฒ!
rails new week4again
rails g model user name mail age:integer
rails g model group name
# string์ default
rails g migration CreateJoinTableGroupUser group user
rails db:migrate
#group.rb
has_and_belongs_to_many :users
#user.rb
has_and_belongs_to_many :groups
association์ด๋ฆ์ ๋ชจ๋ ๋ณต์ํ์ผ๋ก ์ง์ ํ๋ค.
# rails c
User.create!(name: "minwoo")
Group.create!(name:"old")
Group.create!(name:"young")
u=User.find(1)
u.group_ids = 2
u.save
2.has_many through Association
M:N๊ด๊ณ๋ฅผ ํํํ ๋ ์ฌ์ฉํ ์ ์๋ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด์ง๋ง, ๋จ์ ๋ํ ์กด์ฌํ๋ค.
# book.rb
has_many :reviews
has_many :users, through :reviews
# review.rb
belongs_to :book
belongs_to :user
# user.rb
has_many :reviews
has_many :books, through :reviews
has_many through Association์ ์ฌ์ฉํ๋ฉด Book๋ชจ๋ธ์์ ๊ณง๋ฐ๋ก User๋ชจ๋ธ์ ์ ๊ทผํ ์ ์๋ค. through์ ์ด์ฉ์ํ๋ฉด Book->Review=>User์ฒ๋ผ ์ ๊ทผํด์ผํ๋ค.
1๋ฒ ๋ฐฉ๋ฒ์ ์ค๊ฐํ ์ด๋ธ์์ ์์ชฝ ๋ชจ๋ธ์ ํค๋ผ๋ ๋จ์ํ ์ ๋ณด๋ง์ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ์์ M:N๊ณผ ๊ฐ์ ๊ฒฝ์ฐ๋ ์ค๊ฐ ๋ชจ๋ธ์ด ํ์ํ๋ค.
Last updated
Was this helpful?