ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'user_id' in 'field list' ruby fixtures
ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'user_id' in 'field list' ruby fixtures
我尝试 运行 测试但失败如下。
[user1 project]$ rake test
DEPRECATION WARNING: String based terminators are deprecated, please use a lambda. (called from included at /home/.gem/ruby/2.1.3/bundler/gems/authlogic-09163c7d2a9b/lib/authlogic/session/callbacks.rb:66)
DEPRECATION WARNING: String based terminators are deprecated, please use a lambda. (called from included at /home/.gem/ruby/2.1.3/bundler/gems/authlogic-09163c7d2a9b/lib/authlogic/session/callbacks.rb:67)
Started
ERROR["test_login_and_access_bookmarks/managing_bookmarks", BookmarksTest, 0.120519093]
test_login_and_access_bookmarks/managing_bookmarks#BookmarksTest (0.12s)
ActiveRecord::StatementInvalid: ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'user_id' in 'field list': INSERT INTO `roles` (`id`, `user_id`, `created_at`, `updated_at`) VALUES (4, 2, '2015-03-15 17:54:24', '2015-03-15 17:54:24')
1/1: [=========================================================================================================] 100% Time: 00:00:00, Time: 00:00:00
Finished in 0.12271s
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
[user1 project]$
我有两个 table 的用户和角色以及两个名为 users.yml
和 roles.yml
的装置。
users.yml 的内容:
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
user2:
name: user2
id: 2
roles.yml 的内容:
user2_1:
id: 4
user_id: 2
这可能是什么问题?我正在尝试 link 具有角色的用户 table 建立关系,这样 - 来自用户 table 的 user2 在角色 table 中具有角色 ID 4。将不胜感激 help/advice。谢谢!
我检查了一些像这样的 Whosebug 帖子- ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 但没有找到有效的答案。
角色结构table:
mysql> describe roles
-> ;
+-----------------+--------------
| Field | Type
+-----------------+--------------
| id | int(11)
| name | varchar(255)
| parent_id | int(11)
| description | varchar(255)
| default_page_id | int(11)
| cache | text
| created_at | datetime
| updated_at | datetime
+-----------------+--------------
roles
table中没有user_id
字段;您很可能试图在此处指定 parent_id
。
在灯具中实现用户和角色之间关联的最佳方式如下:
# users.yml
user2:
name: User 2
# roles.yml
role2:
name: Second role
parent: user2 (User)
注意:在roles.yml
中设置parent: user2 (User)
使得role2
对象使用user2
作为父对象,并且由于对象类型不同(parent
vs user
),应该包含 (User)
字符串来表示多态关系。
请务必浏览 http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 页面以熟悉灯具。
我尝试 运行 测试但失败如下。
[user1 project]$ rake test
DEPRECATION WARNING: String based terminators are deprecated, please use a lambda. (called from included at /home/.gem/ruby/2.1.3/bundler/gems/authlogic-09163c7d2a9b/lib/authlogic/session/callbacks.rb:66)
DEPRECATION WARNING: String based terminators are deprecated, please use a lambda. (called from included at /home/.gem/ruby/2.1.3/bundler/gems/authlogic-09163c7d2a9b/lib/authlogic/session/callbacks.rb:67)
Started
ERROR["test_login_and_access_bookmarks/managing_bookmarks", BookmarksTest, 0.120519093]
test_login_and_access_bookmarks/managing_bookmarks#BookmarksTest (0.12s)
ActiveRecord::StatementInvalid: ActiveRecord::StatementInvalid: Mysql::Error: Unknown column 'user_id' in 'field list': INSERT INTO `roles` (`id`, `user_id`, `created_at`, `updated_at`) VALUES (4, 2, '2015-03-15 17:54:24', '2015-03-15 17:54:24')
1/1: [=========================================================================================================] 100% Time: 00:00:00, Time: 00:00:00
Finished in 0.12271s
1 tests, 0 assertions, 0 failures, 1 errors, 0 skips
[user1 project]$
我有两个 table 的用户和角色以及两个名为 users.yml
和 roles.yml
的装置。
users.yml 的内容:
# Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
user2:
name: user2
id: 2
roles.yml 的内容:
user2_1:
id: 4
user_id: 2
这可能是什么问题?我正在尝试 link 具有角色的用户 table 建立关系,这样 - 来自用户 table 的 user2 在角色 table 中具有角色 ID 4。将不胜感激 help/advice。谢谢!
我检查了一些像这样的 Whosebug 帖子- ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 但没有找到有效的答案。
角色结构table:
mysql> describe roles
-> ;
+-----------------+--------------
| Field | Type
+-----------------+--------------
| id | int(11)
| name | varchar(255)
| parent_id | int(11)
| description | varchar(255)
| default_page_id | int(11)
| cache | text
| created_at | datetime
| updated_at | datetime
+-----------------+--------------
roles
table中没有user_id
字段;您很可能试图在此处指定 parent_id
。
在灯具中实现用户和角色之间关联的最佳方式如下:
# users.yml
user2:
name: User 2
# roles.yml
role2:
name: Second role
parent: user2 (User)
注意:在roles.yml
中设置parent: user2 (User)
使得role2
对象使用user2
作为父对象,并且由于对象类型不同(parent
vs user
),应该包含 (User)
字符串来表示多态关系。
请务必浏览 http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 页面以熟悉灯具。