1

다음 유대인이 있습니까?레일스에서 ​​primary_key와 foreign_key의 데이터 유형이 서로 다른 두 모델을 연결할 수 있습니까?

schema.rb 
    users 
    id:int (autoincr.) 
    uid:string <---------------- 
    ... 

    fb_friends 
    id:int (autoincr.) 
    uid:int <------------------- 
    friend_uid:int 
    ... 

user.rb 
    has_many :fb_friends, :primary_key => "uid", :foreign_key => "uid" 

참고 "사용자"를 묶어 키와 "fb_friends"는 서로 다른 데이터 타입임을 (문자열 INT). 이상적인 세계에서 나는 아마도 이것을하지는 않을 것이지만, 현재의 시스템 아키텍처를 고려할 때 이것이 가장 잘 작동하는 해결책 인 것 같다.

하지만이 작업은 괜찮습니까/스누피가 없어도 작동합니까?

답변

2

=>

외국 키

대응 열

그리고 참조 된 키는 내부의 유사한 데이터 유형이 InnoDB 내에 있어야하므로 형식 변환없이 과 비교할 수 있습니다. 크기는 이고 정수 유형의 부호는 이어야합니다. 문자열 유형의 길이는 이 아니어야합니다. 이진이 아닌 (문자) 문자열 열의 경우 문자 집합과 데이터 정렬은 이어야합니다. 어쨌든, 나는 그것이 :(다른 유형의 필드를 비교하는 좋은 방법이다

더 많은 정보 here을, 말을하지 않습니다.

가 당신을 도움이되기를 바랍니다!

1

작동 여부는 확실하지 않지만 변경할 수 있으면 권장하지 않습니다. 그것은 레일 마이그레이션의 열 유형을 변경하는 정말 쉽습니다 : 그것은 MySQL을 위해, 예를 들어, 사용중인 DB 엔진에 의존

change_column :users, :uuid, :integer 
관련 문제