我是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)
我在运行任何迁移之前设置了两者之间的关联,所以我不明白为什么没有正确设置它。
有什么建议吗?
答案 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
运行它并再次尝试关联?