2012-10-05 86 views
0

我有兩個表,項目和類別。我已預先加載4行的類別,每個項目必須屬於其中一個4.但是,當我嘗試在命令行中添加現有項目和現有類別之間的關聯時,我得到:Rails協會無法正常工作

> 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

oh duh ...謝謝! – user1436111

+0

獎金問題:我可以在rails控制檯中調用「project.category.name」並正確地獲取名稱「Food」,但在我的Projects視圖中,當我嘗試引用project.category.name時出現錯誤,儘管我可以請參閱project.filename等其他屬性。這是一個路由錯誤...? – user1436111

+0

這應該可能是一個新問題。如果你發佈了錯誤,而不是僅僅表明你有錯誤,它也會更清晰。 – willglynn