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
迁移令牌中的更改