【发布时间】:2015-03-31 07:40:59
【问题描述】:
在我的 rails 应用程序中,我想为我的收藏夹模型添加一个独特的约束。 (我正在重新制作一个基本的 Twitter 应用程序,包含用户和推文,并生成了第三个模型以供收藏)。但是,当我尝试向我的收藏夹模型添加一个唯一约束以便一个用户只能收藏一条推文一次时,然后运行命令
rake db:migrate,我收到以下错误:
rake 中止!
StandardError:发生错误,此迁移和所有后续迁移已取消:
SQLite3::ConstraintException: 唯一约束失败: favourites.user_id, favourites.tweet_id: CREATE UNIQUE INDEX "index_favourites_on_user_id_and_tweet_id" ON "favourites" ("user_id", "tweet_id")/Users/Tabish/.rvm/gems/ruby -2.2.0/gems/sqlite3-1.3.10/lib/sqlite3/statement.rb:108:in `step'
这是我创建的迁移文件的外观:
class AddUniqueConstraintToTweets < ActiveRecord::Migration
def change
add_index :favourites, [:user_id, :tweet_id], :unique => true
end
end
这里还有我最喜欢的表迁移文件:
class CreateFavourites < ActiveRecord::Migration
def change
create_table :favourites do |t|
t.references :user, index: true
t.references :tweet, index: true
t.timestamps null: false
end
add_foreign_key :favourites, :users
add_foreign_key :favourites, :tweets
end
end
我正在使用 Rails 4.2.0 和 SQLite3
【问题讨论】:
-
谢谢!!我刚刚被 db 删除,然后由 db 重新创建,然后运行 migrate 并且一切正常!:)
标签: ruby-on-rails ruby sqlite ruby-on-rails-4.2