Rails 2.3.8关联问题has_many belongs_to

时间:2010-08-29 14:31:25

标签: ruby-on-rails

我是Rails的新手。我有两个模特,人和日。

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) 

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

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

告诉关于关联的模型不会在数据库中设置外键 - 您需要创建显式迁移以将外键添加到适当的表中。

为此,我建议:

脚本/生成迁移add_person_id_to_days person_id:integer

然后看看它创建的迁移文件,以便检查它没关系,它应该是这样的:

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

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

运行它并再次尝试关联?