두 모델이 있습니다 : 사람과 관계. 두 번째 사람은 두 사람 사이의 관계에 대한 정보를 저장합니다. 그것은 parent_id와 child_id 필드를 가지고 있고 id 필드를 가지고 있지 않습니다. 나는 has_many : through와 연결하여 작동한다.레일스에서 id가없는 테이블을 관리하는 방법은 무엇입니까?
그러나 :
- Relation.find (모든)은 (더 ID 필드가없는 렸기 때문에) 테이블에 어떤 관계가있는 경우에도 빈 배열을 반환합니다.
- 관계를 삭제하는 방법을 모르겠다.
class Person < ActiveRecord::Base has_many :child_relations, :class_name => "Relation", :foreign_key => "parent_id" has_many :parent_relations, :class_name => "Relation", :foreign_key => "child_id" has_many :children, :through => :child_relations has_many :parents, :through => :parent_relations end class Relation < ActiveRecord::Base belongs_to :parent, :class_name => "Person" belongs_to :child, :class_name => "Person" end
어떤 제안 :
내 모델은 다음과 같습니다?
업데이트 : has_many :까지 사용했습니다. 테이블에 관계 유형에 대한 정보도 저장했기 때문에. 현재 포기하고 ID 테이블을 테이블에 추가했습니다 (Rails 규칙 ...). 하지만 제 질문은 열려 있습니다.
그것은 작동하지 않습니다 단지 두 has_and_belongs_to_many 참조를하지 않아도됩니다. 관계가 아닌 개인 모델에서 외래 키를 설정해야합니다. Relation 모델에서는 연관 이름 (부모 및 자식)에 _id를 추가하기 때문에 Rails는 외래 키의 이름을 추측합니다. 그래서 아마도 모델 사양은 제가 제 질문에서 제안한대로 유지해야합니다. 하지만 어쨌든 고마워! – klew