嘿,我的 rake
有一个小问题
class CreateEvents < ActiveRecord::Migration
def self.up
create_table :events do |t|
t.integer :broadcast_id
t.integer :position
t.string :title
t.string :location
t.string :link
t.text :description
t.datetime :time
end
add_foreign_key :events, :broadcast_id, :broadcasts
end
def self.down
remove_foreign_key :events, :broadcast_id, :broadcasts
drop_table :events
end
end
问题 => add_foreign_key :events, :broadcast_id, :broadcasts
$ rake db:迁移
== CreateEvents: migrating ===================================================
-- create_table(:events)
-> 0.0021s
-- add_index(:events, :broadcast_id)
-> 0.0004s
rake aborted!
An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: near "FOREIGN": syntax error: ALTER TABLE "events" ADD FOREIGN KEY ("broadcast_id") REFERENCES "broadcasts"(id)
最佳答案
你为什么要这样定义外键?
如果你想要你的 Events
之间的关系和 Broadcasts
那么你应该考虑创建一个事件记录关系。就像是
# Event model
class Event < ActiveRecord::Base
belongs_to :broadcast
end
# Broadcast model
class Broadcast < ActiveRecord::Base
has_many :events
end
这样,您就可以让 rails 为您维护外键关系。查看 Rails Guide有关事件记录关联的更多信息。
关于ruby-on-rails - Rails 中的迁移(sqlite),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5091299/