| Association
A DB에 B DB의 어떤 데이터를 삽입해야 할 때 유용한 rails 의 기능이다.
DB간의 종속성을 정의할 수 있다.
| 구성
각 유저당 개인적인 친구목록 DB를 가져야 하는 앱이라고 가정해보자.
model 은 friend, user 가 있다.
models/friend
class Friend < ApplicationRecord
belongs_to :user
end
belongs_to 를 사용하여 friend 모델은 user 모델에 속한다고 명시해준다.
models/user
class User < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :friends
end
has_many 를 사용하여 하나의 user 모델은 friends 모델을 가진다고 명시해준다.
아래의 명령어를 사용하여 friends db에 user_id column 하나를 추가해 준다.
rails g migration add_user_id_to_friends user_id:integer:index
column에는 integer 타입으로써 추가된다고 명시하였고, index에도 user_id가 추가된다고 명시하였다.
이후에는 물론 rails db:migration을 실행해 주어야 한다.
그러면 db/schema 에 다음과 같이 추가될 것이다.
create_table "friends", force: :cascade do |t|
t.string "name"
t.float "q"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
t.integer "user_id"
t.index ["user_id"], name: "index_friends_on_user_id"
end
이제 user 가 friends 목록을 삽입 할 때마다 고유한 어떤 user_id 를 (devise의 경우 currentuser.id 헬퍼 사용 )
같이 집어넣을 수 있도록 해준다면, 처음에 말 한 대로 user마다 서로다른 friends db를 갖도록 구상할 수 있다.