2012-10-05 7 views
0

두 개의 테이블, 프로젝트 및 카테고리가 있습니다. 4 줄로 된 범주를 미리로드했고 각 프로젝트는 4 중 하나에 속해야합니다. 그러나 기존 프로젝트와 기존 범주를 연결하려고하면 명령 줄에 다음과 같이 나타납니다.레일 연결이 올바르게 작동하지 않습니다.

> Project.find(11).category = Category.find(1) 
Project Load (0.5ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = $1 LIMIT 1 [["id", 11]] 
Category Load (0.7ms) SELECT "categories".* FROM "categories" WHERE "categories"."id" = $1 LIMIT 1 [["id", 1]] 
=> #<Category id: 1, name: "Photography", created_at: "2012-10-05 00:07:37", updated_at: "2012-10-05 00:07:37"> 
1.9.3p194 :004 > Project.find(11).category 
Project Load (0.7ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = $1 LIMIT 1 [["id", 11]] 
=> nil 
> Project.find(11).category 
Project Load (0.4ms) SELECT "projects".* FROM "projects" WHERE "projects"."id" = $1 LIMIT 1 [["id", 11]] 
=> nil 

분명히 뭔가 작동하지 않습니다. 내 마이그레이션 :

class CreateProjects < ActiveRecord::Migration 
    def change 
    create_table :projects do |t| 
     t.string :filename 
     t.string :location 
     t.integer :id 
     t.references :category 
     t.timestamps 
    end 
    end 
end 

class CreateCategories < ActiveRecord::Migration 
    def change 
    create_table :categories do |t| 
     t.integer :id 
     t.string :name, :default => "Design" 
     t.timestamps 
    end 
    end 
end 

그리고 모델 :

class Category < ActiveRecord::Base 
    attr_accessible :name, :id, :category_id 
    has_many :projects 
    def to_hash 
    { 
     :id => self.id, 
     :name => self.name 
    } 
    end 
end 

class Project < ActiveRecord::Base 
    attr_accessible :id, :project_id, :filename, :location, :uploaded_file 
    belongs_to :category 
    def to_hash 
    { 
     :id => self.id, 
     :filename => self.filename, 
     :location => self.location 
    } 
    end 
end 

는 어디서 잘못된 것입니까? 이 모든 것을 읽으면서 미리 감사드립니다!

답변

3

레코드를 저장하지 않았습니다.

project = Project.find(11) 
project.category = Category.find(1) 
project.save! 
+0

오 ... 감사합니다! – user1436111

+0

보너스 질문 : 레일즈 콘솔에서 "project.category.name"을 호출하고 "Food"라는 이름을 올바르게 가져올 수는 있지만 프로젝트 뷰에서는 project.category.name을 참조하려고 할 때 오류가 발생합니다. project.filename과 같은 다른 속성을 참조하십시오. 라우팅 오류입니까? ...? – user1436111

+0

아마도 새로운 질문 일 것입니다. 또한 오류가 있음을 알리는 대신 오류를 게시하면 훨씬 더 명확 해집니다. – willglynn

관련 문제