我试图在teardown
方法&中删除我刚刚在测试中添加的一行(minitest)。它失败并显示表没有主键的消息。以下是其迁移:
Sequel.migration do
up do
create_table :hobbies_users do
Integer :user_id
Integer :hobby_id
unique [:user_id, :hobby_id]
end
end
down do
drop_table :hobbies_users
end
end
我该怎么办?不使用主键是不好的做法吗?
测试代码,我发现了问题:
require_relative '../../test_helper.rb'
require 'api/models/users_hobbies'
class UsersHobbiesTest < Minitest::Test
def setup
@uh = UsersHobbies
.new(user_id: User.all.sample.id, hobby_id: Hobby.last.id * 10)
.save
end
def test_accessors
assert_kind_of User, @uh.user
end
def teardown
@uh.destroy
end
end
答案 0 :(得分:1)
目前您可以在模型中定义主键:
self.primary_key = :some_column
但是我觉得有必要在每个表中都有主键,因为最近我遇到了一种情况,当我有一个没有主键的关联表时,我需要通过删除db条目来破坏关联,这是由于没有主键(在我的情况下是MySQL),不可能。
答案 1 :(得分:0)
哟可以这样做
@record_to_erase = DB["DELETE FROM hobbies_users"]
@record_to_erase.delete