2010-12-14 3 views
1

레일에 조명기를 사용하려고합니다. 레이크 dB : 비품 :로드 오류없이 실행 및 테이블 내 데이터를 채 웁니다하지만, 많은 내 많은 테이블이 잘못된 ID가 포함 조인레일 3 고정 장치 조인 테이블 ID가 올바르지 않습니다.

예 :

**tags.yml** 
one: 
    id: 1 
    tag: pie 
    posts: two 

two: 
    id: 2 
    tag: cake 
    posts: one, two 

**posts.yml** 
one: 
    id: 1 
    subject: subject 
    content: content 
    slug: woot 
    tags: cake 

two: 
    id: 2 
    subject: subject2 
    content: content2 
    slug: this_is_good 
    tags: pie, cake 
실행 마이그레이션 후

db:fixtures:load 내 테이블이 채워을 로 :

태그 :
ID ------ 태그
1 ...... 파이
2 ...... 케이크

,369 1,363,210

posts_tags :
ROWID - post_id를은 -
1 ...... (1) ...... 974,324,064
2 ...... (2) ...... 576,189,563
3 tag_id .. .... 3 ...... 974324064

어떤 이유로 자동 생성 된 tag_id가 생성되어 내 조인 테이블에 채워집니다. 왜?

def self.up 
    create_table :posts do |t| 
     t.string :subject 
     t.text :content 

     t.timestamps 
    end 
    end 

def self.up 
    create_table :tags do |t| 
     t.string :tag 

     t.timestamps 
    end 

    create_table :posts_tags, :id => false do |t| 
     t.integer :post_id 
     t.integer :tag_id 
    end 
    end 

답변

0

나는 당신의 모델이 같은 있다고 가정거야 :로

편집

마이 그 레이션이 정의된다. 가 posts_tags 테이블 조인 의미

class Tag Post < ActiveRecord::Base 
    has_and_belongs_to_many :posts 
end 

class Post < ActiveRecord::Base 
    has_and_belongs_to_many :tags 
end 

은 열로에 POST_ID 및 tag_id 할 수 있습니다. rowid 열을 가질 수 없습니다. posts_tags의 테이블 정의에 :id => false과 같은 것이 필요합니다.

+0

posts_tags 테이블이 이미 정의되어 posts_tags : ID => 거짓 할 일 | t | t.integer : post_id t.integer tag_id end. rowid 열이 왜 생성되는지 모르겠습니다. – Mark

1

적절한 연결이 정의되어 있다고 가정합니다. 당신은 당신의 비품에 작은 변화가 필요합니다 :

**tags.yml** 
one: 
    tag: pie 
    posts: two 

two: 
    tag: cake 
    posts: one, two 

**posts.yml** 
one: 
    subject: subject 
    content: content 
    slug: woot 
    tags: 
    - two 

two: 
    subject: subject2 
    content: content2 
    slug: this_is_good 
    tags: 
    - one 
    - two 

EDIT : 나는 모든 비품을 지웠다. 정확한 참조가 생성됩니다. 그러나 이것은 정답이 아닙니다.

+0

이것은 도움이되지 않았습니까? – Mark

+0

신속하게 사용해 봅시다. Rails 3에 있습니까? – Swanand

+0

또한 협회와 같은 것은 무엇입니까? ('habtm' 또는'hm through'?) – Swanand

0

테스트 데이터베이스에 "rowid"열을 사용했던 이전 스키마가있을 수 있습니까?

시도 : CREATE_TABLE :

rake db:test:clone 
관련 문제