2011-09-30 3 views
1

두 개의 항목, 사용자 및 게시물 및 이들을 함께 연결하는 조인 테이블이 있습니다. 두 항목은 서로 has_many 관계를가집니다 (: 조인 표를 통해). 두 데이터베이스를 만든 후 조인 테이블을 만들었습니다. 내가 가지고있는 문제는 @ user.posts 또는 @ post.users를 사용하여 뭔가를 시도 할 때마다 오류가 발생한다는 것입니다. 거의 제대로 설정되지 않은 것과 같습니다. 어딘가에 내가 모델을 만든 후에 연관을 만들면 add_column 메서드를 사용해야한다는 것을 읽었습니다. 그게 내 문제 야? 나는 그 방법이나 아무것도 구현하는 방법에 대해 확신하지 못했습니다. 이 오류는 다음과 같습니다.테이블 조인 및 has_many 관계가 작동하지 않음

SQLite3 :: SQLException : 해당 열 없음 : users.post_id : SELECT "users". * FROM "users"WHERE "users". "post_id"= 60 AND "users" id "=? LIMIT 1

오류가 발생합니다. 열을 추가해야하지만이를 수행하는 방법이 확실하지 않습니다.

ActiveRecord::Schema.define(:version => 20110930155455) do 

    create_table "posts", :force => true do |t| 
    t.text  "content" 
    t.integer "vote_count" 
    t.text  "author" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "user_id" 
    end 

    create_table "users", :force => true do |t| 
    t.string "user_name" 
    t.string "password" 
    t.date  "time" 
    t.integer "posts_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    t.integer "post_id" 
    end 

    create_table "votes", :force => true do |t| 
    t.integer "post_id" 
    t.integer "user_id" 
    t.datetime "created_at" 
    t.datetime "updated_at" 
    end 

end 
+1

사용자 테이블, 게시 테이블 및 조인 테이블과 관련이있는 현재 스키마 부분을 게시 할 수 있습니까? 응용 프로그램에서'db/schema.rb'에서 찾을 수 있습니다. 또한'User','Post' 클래스와 조인 모델 클래스의 정의 (구체적인 클래스가있는 경우). 나는 "has_many : through"연관을 두 번째로 사용하지만 ... – mliebelt

+0

조인 테이블에 대한 모델 코드 및 정보 게시. users 테이블에는 post_id 필드가 없어야하며, 마찬가지로 posts 테이블에는 user_id 필드가 없어야합니다. 해당 필드는 조인 테이블에 있어야합니다. –

답변

0

예, 당신은 외래 키에 대한 마이그레이션을 만들어야합니다

여기 내 최신 schema.db입니다. integer 유형의 : users 테이블에 post_id을 추가해야합니다. 수행하십시오.

rails g migration AddPostIdToUsers post_id:integer 

마이그레이션을 생성하려면 다음을 수행하십시오. 협회 *을 통해, 그것은 당신에게 더 많은 제어 할 수 있습니다 : 당신은 당신은 또한 *의 has_many을 설정하는 것을 고려할 수 있습니다

class AddPostIdToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :post_id, :integer 
    end 
end 

과 같은 일을 만들어야합니다.

+0

: through 연결을 사용하고 있습니다. 그것은 도움이되지 않았다. 내 테이블을 업데이트하는 데 문제가있는 것 같습니다. 나는 posts 테이블의 컬럼을 my join 테이블과 동일한 컬럼으로 명명했다. 이름을 변경하고 rake db : migrate를 실행하려고 시도했지만 아무 일도 일어나지 않습니다. 이름은 변경되지 않습니다. 나는 이러한 연관성과 물건을 만들지는 모르지만 실제로 업데이트되는 것은 무엇입니까? – user972276

+0

그런 경우 사용자 또는 게시가 아닌 조인 테이블에 FK가 필요합니다. join 테이블은 본질적으로'belongs_to : user'와'belongs_to : post'입니다. 그런 다음'rake db : migrate'을 실행하면'schema.db'에 추가 된 것을 볼 수 있습니다. 레일 콘솔의 연관성을 가지고 놀 수 있으며 작동하는지 확인할 수있는 좋은 방법입니다. –