Ruby on rails 未找到Rails测试表

Ruby on rails 未找到Rails测试表,ruby-on-rails,testing,has-many,Ruby On Rails,Testing,Has Many,因此,我试图找出如何测试这种关系,但我遇到了一些困难 这是错误 table tokens has no column named user_id $ rails new lab $ cd lab $ rails g model user name # has_many tokens $ rails g model token code # belongs_to user $ rake db:migrate # tokens.yml one: code: 0A user: user_

因此,我试图找出如何测试这种关系,但我遇到了一些困难

这是错误

table tokens has no column named user_id
$ rails new lab
$ cd lab
$ rails g model user name  # has_many tokens
$ rails g model token code # belongs_to user
$ rake db:migrate

# tokens.yml
one:
  code: 0A
  user: user_one
two:
  code: 0B
  user: user_one

# users.yml
  user_one:
  name: John

# user_test.rb
require 'test_helper'
class UserTest < ActiveSupport::TestCase
  test "has tokens" do
    user = users(:user_one)
    assert_not_equal [], user.tokens
  end
end
下面是我如何重新创建错误的

table tokens has no column named user_id
$ rails new lab
$ cd lab
$ rails g model user name  # has_many tokens
$ rails g model token code # belongs_to user
$ rake db:migrate

# tokens.yml
one:
  code: 0A
  user: user_one
two:
  code: 0B
  user: user_one

# users.yml
  user_one:
  name: John

# user_test.rb
require 'test_helper'
class UserTest < ActiveSupport::TestCase
  test "has tokens" do
    user = users(:user_one)
    assert_not_equal [], user.tokens
  end
end
$rails新实验室
$cd实验室
$rails g model user name#有许多令牌
$rails g型号令牌代码#属于_用户
$rake数据库:迁移
#代币
一:
代码:0A
用户:用户1
二:
代码:0B
用户:用户1
#users.yml
用户一:
姓名:约翰
#用户测试.rb
需要“测试助手”
类UserTest
如果查看db/schema.rb,您会注意到tokens表中没有名为user\u id的列。但是在你的装置中,你引用了一个用户,就好像它应该引用一样。如果您将rails生成器命令修改为
rails g model token code:string user\u id:int
,那么它应该可以工作。

对于
user
token
之间的1-M关系,
tokens
表必须具有
用户
表的外键。你忘了创建那个。 在您的测试用例中,您正在调用
user.tokens
,但由于
tokens
表没有名为
user\u id
的外键,您会得到如下错误:

表令牌没有名为user\u id的列

为了解决这个问题,

通过运行以下命令,生成一个迁移,将列
user\u id
作为外键添加到
tokens
表中:

rails g migration AddUserIdToTokens user:references
在这次运行之后,
rakedb:migrate
迁移
令牌中的更改