ruby-on-rails - Rails 中的迁移(sqlite)

标签 ruby-on-rails migration sqlite

嘿,我的 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/

相关文章:

ruby-on-rails - Rspec - 预期 ActiveRecord::RecordInvalid 但没有引发任何问题?

ruby-on-rails - 即使有一个零,我怎么还能做 gsub?

ruby-on-rails - 如何使用 AASM 避免重复代码?

entity-framework - Entity Framework 迁移两次添加列

ruby-on-rails - 一对一 : Undefined method build

objective-c - 调试核心数据迁移以比较哈希值

java - play框架从2.0.8迁移到2.1.0动态表单找不到符号

sql - 在 SQL 查询 where 子句中使用多个值

sql - 如何在sqlite中重用子查询的结果

打开时出现 Swift 和 Sqlite3 错误