2010-08-29 117 views
2

我是Rails的新手。我有两个模型,人和日。Rails 2.3.8关联问题has_many belongs_to

class Person < ActiveRecord::Base 
    has_many :days 
end 

class Day < ActiveRecord::Base 
    belongs_to :person 
    has_many :runs 
end 

当我尝试访问@ person.days我得到一个SQL错误:

$ script/consoleLoading development environment (Rails 2.3.8) 
ree-1.8.7-2010.02 > @person = Person.first 
=> #<Person id: 1, first_name: "John", last_name: "Smith", created_at: "2010-08-29 14:05:50", updated_at: "2010-08-29 14:05:50"> ree-1.8.7-2010.02 
> @person.days 
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: days.person_id: SELECT * FROM "days" WHERE ("days".person_id = 1) 

我安装运行任何迁移前两者之间的关联,所以我不明白为什么这有没有正确设置。

有什么建议吗?

回答

3

告诉你关于关联的模型不会在数据库中设置外键 - 你需要创建一个明确的迁移来将外键添加到适合的表中。

为此,我会建议:

脚本/生成迁移add_person_id_to_days PERSON_ID:整数

然后看看它会创建迁移文件为你检查它的确定,应该是这样的:

class AddPersonIdToDays < ActiveRecord::Migration 
    def self.up 
    add_column :days, :person_id, :integer 
    end 

    def self.down 
    remove_column :days, :person_id 
    end 
end 

运行并再次尝试关联?