Rails user_id는 외래 키 참조 라는 것을 어떻게 알 수 user있습니까?
Rails 자체는 그것이 user_id외래 키 참조 라는 것을 모릅니다 user. 첫 번째 명령에서는 rails generate model Micropost user_id:integer열만 추가 user_id하지만 레일은 col의 사용을 알지 못합니다. Micropost모델에 선을 수동으로 넣어야합니다
class Micropost < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :microposts
end
키워드 belongs_to와 has_many이러한 모델 간의 관계를 결정하고 모델 user_id의 외래 키로 선언 User합니다.
이후 명령 은 모델에 rails generate model Micropost user:references행 belongs_to :user을 추가하고 Micropost외래 키로 선언합니다.
참고
이전 방법을 사용하여 외래 키를 선언하면 모델 / 테이블과의 관계에 대해서만 Rails에 알릴 수 있습니다. 관계에 대한 데이터베이스를 알 수 없습니다. 따라서 소프트웨어를 사용하여 EER 다이어그램을 생성 할 때 MySql Workbench모델간에 관계 스레드가 없다는 것을 알 수 있습니다. 다음 그림과 같이

그러나 이후 방법을 사용하면 마이그레이션 파일이 다음과 같은 것을 알 수 있습니다.
def change
create_table :microposts do |t|
t.references :user, index: true
t.timestamps null: false
end
add_foreign_key :microposts, :users
이제 외래 키는 데이터베이스 수준에서 설정됩니다. 적절한 EER다이어그램을 생성 할 수 있습니다 .
