[rails] 다 대다 중간 테이블 [to_table, class_name, through, source]

4487 단어 초학자용
     gift           
User ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー>



20210301082221_create_gifts_.rb
class CreateGifts < ActiveRecord::Migration[6.0]
  def change
    create_table :gifts do |t|
      t.integer    :price,    null: false
      t.references :giver,    foreign_key: { to_table: :users }
      t.references :receiver, foreign_key: { to_table: :profiles }
      t.timestamps
    end
  end
end

gift.rb
class Gift < ApplicationRecord
  belongs_to :giver, class_name: 'User', foreign_key: :giver_id
  belongs_to :receiver, class_name: 'Profile', foreign_key: :receiver_id
end

user.rb
class User < ApplicationRecord
  has_many :gifts, class_name: 'Gift', foreign_key: 'giver_id'
  has_many :receivers, through: :gifts, source: :receiver
end

profile.rb
class Profile < ApplicationRecord
  has_many :gifts, class_name: 'Gift', foreign_key: 'receiver_id'
  has_many :givers, through: :gifts, source: :giver
end


foreign_key: { to_table: :users } users 테이블에서 참조하십시오.

class_name: 'User'       User 클래스에서 참조하십시오.

through: :gifts        gifts테이블을 통해

source: :giver       giver모델이 참조원이야

foregin_key = 입구
source = 출구

라고 하는 기사를 봐 주셔서, 매우 알기 쉬웠습니다.
기사는 여기

좋은 웹페이지 즐겨찾기