6 개월부터 3 & 레일에서 작업했지만 여전히 "문자열"컬럼을 기본 키로 구현할 수있는 방법에 대해서는 아직 모르고 있습니까? 나는 그것이 MySQL의 테이블에 대한 기본 키가 아닌 정수 필드를 허용하지 않는 것 같아요. 예를 들어. customer_code : string을 기본 키로 사용하는 고객 테이블이있는 경우 & customer_code 필드를 통해 고객 테이블을 참조하는 제품 테이블 (제품 테이블의 customer_code)은 외래 키입니다. 레일 3에서이 관계를 어떻게 구현할 수 있습니까? 누구나이 관계를 구현하는 적절한 방법을 제안 할 수 있습니까?레일스 3 개의 MySQL 관계
0
A
답변
0
나는 간단하고 표준 레일 규칙을 따르겠습니다. 키에 자동 ID 필드를 사용하십시오.
코드를 얻기 위해 사용자 개체를 검색 할 필요가 없도록 제품 테이블에 customer_code를 갖고 싶다면 제품을 저장할 때이를 저장하십시오.
0
두 모델이 있다고 생각합니다. Costumer
및 Products
입니다. 그렇다면이 솔루션은 어떨까요? 잡았다에
class Costumer < AR::Base
set_primary_key 'code'
has_many :products, :foreign_key => :costumer_code
validates :code, :presence => true
end
class Product < AR::Base
belongs_to :costumer, :foreign_key => :costumer_code
end
는 id
키 기본 차와 같은 자동 증가 아니기 때문에 당신이 코드가 제대로 생성에 설정된의 costumers를 보장해야한다는 것입니다. before_create
콜백이 도움이 될 것입니다.
0
class Product < ActiveRecord::Base
belongs_to :customer, :foreign_key => :customer_code, :primary_key => :customer_code
end
'before_filter'가 아니라'before_create' 또는 'before_save'입니다. 필터가 컨트롤러에 있습니다. – RocketR
네, 맞아요. 물론'before_create' 콜백입니다. –